Ho scritto un codice di base in Thread e l'output che ho ottenuto è piuttosto sorprendente.Poco confuso sul comportamento del thread
public class ThreadImp implements Runnable{
public static void main(String[] args) {
ThreadImp threadImp = new ThreadImp();
Thread t =new Thread(threadImp);
t.setName("Fred");
t.start();
threadImp.run();
t.run();
}
public void run(){
System.out.println("Current Thread: "+ Thread.currentThread());
}
}
L'output qui mi aspetto è che verrà stampata
Discussione attuale: Discussione [principale, 5, principale]
Discussione attuale: Discussione [Fred, 5, principale ]
Discussione attuale: Discussione [principale, 5, principale]
Questo risultato posso capisci, c'è solo un thread che sto creando i.e Thread Fred. Altre due chiamate per eseguire il metodo sono come chiamare un metodo normale.
Ma quello che non riesco a capire a volte quando eseguo lo stesso programma ottengo il seguente output. Quindi qualcuno può spiegarmelo perché si comporta in questo modo.
Discussione attuale: Discussione [principale, 5, principale]
Discussione attuale: Discussione [Fred, 5, principale]
Comportarsi esattamente come? Che l'esecuzione non è coerente? – Gimby
aggiungi 't.join()' dopo 't.start()' – fukanchik
La cosa più importante da notare è che Java non è thread-safe, il che significa che non dovresti progettare il tuo programma assumendo che i thread si comportino nello stesso modo ogni volta. Il modo in cui i thread si comportano potrebbe anche variare da macchina a macchina. –