t.start()
è il metodo che la libreria fornisce al tuo codice per chiamare quando vuoi un nuovo thread.
r.run()
è il metodo che si prevedono per la biblioteca per chiamare nel nuovo thread.
Alla maggior parte di queste risposte manca il quadro generale, ovvero che, per quanto riguarda il linguaggio Java, non c'è più differenza tra t.start()
e di r.run()
quanto non ci sia tra altri due metodi.
Sono entrambi solo metodi. Entrambi corrono nel thread che li ha chiamati . Entrambi fanno qualunque cosa sia stata programmata, e poi ritornano entrambi, sempre nello stesso thread, ai loro chiamanti.
La differenza più grande è che la maggior parte del codice per t.start()
è codice nativo mentre, nella maggior parte dei casi, il codice per r.run()
sarà puro Java. Ma non fa molta differenza. Il codice è codice. Il codice nativo è più difficile da trovare e più difficile da capire quando lo trovi, ma è ancora solo il codice che dice al computer cosa fare.
Quindi cosa fa t.start()
?
Crea un nuovo thread nativo, organizza il richiamo di quel thread t.run()
e quindi dice al sistema operativo di far funzionare il nuovo thread. Quindi ritorna.
E che cosa r.run()
fare?
La cosa divertente è che la persona che pone questa domanda è la persona che l'ha scritta . r.run()
fa qualunque cosa tu (cioè lo sviluppatore che l'ha scritto) lo abbia progettato per fare.