Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di energie
    Registrato dal
    Apr 2003
    Messaggi
    446

    [JAVA]Aiuto con Thread dispettoso

    ragazzi sto davvero impazzendo, avvio il tutto così:

    Codice PHP:
    Udp myUdp= new Udp();

    public 
    void makeSearch(String keywordthrows IOException{
            
                    
    System.out.println("Searching");
            
                  
    //.....code
                
                
    myUdp.start();
                
                         
    //....other code


    questa è la classe Udp:



    Codice PHP:
    public class Udp extends Thread {

    int i=0;
     
            public 
    void run() {
                      while (
    true) {


                                  
    //....other code
                         //....other code

    stop();
    }
    }

    in questo modo io spero che chiuda questo thread, così da poterlo richiamare una seconda,terza o qualsivoglia numero di volte, nella compilazione non mi da alcun errore quando provo a lanciare il makeSearch la prima volta il tutto avviene senza errori e il programma fa il suo lavoro, ma quando provo a rilanciare per la seconda volta makeSearch, questo si blocca proprio quando arriva a myUdp.start(); e non capisco perchè non prosegue...qualche aiuto?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA]Aiuto con Thread dispettoso

    Originariamente inviato da energie
    questo si blocca proprio quando arriva a myUdp.start(); e non capisco perchè non prosegue...qualche aiuto?
    Dalla documentazione di start() di Thread:

    It is never legal to start a thread more than once. In particular, a thread may not be restarted once it has completed execution.

    Il ciclo di vita di un thread è tale che una volta che è entrato nello stato di "dead" (cioè quando il run() è terminato), non può più essere riavviato semplicemente con start(). Devi ricreare un nuovo oggetto Thread, nel tuo caso specifico, devi ricreare un nuovo oggetto Udp e solo allora puoi fare nuovamente lo start().

    P.S. quello stop() che vedo nel tuo codice sopra è lo stop() di Thread??? È deprecato e da non usare mai!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di energie
    Registrato dal
    Apr 2003
    Messaggi
    446
    grazie andbin...stavo davvero impazzendo!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.