Lorsque nous appelons la méthode start() sur un thread, cela provoque le démarrage de l'exécution du thread et la méthode run() du thread est appelée par la machine virtuelle Java (JVM). Si nous appelons directement la méthode run(), elle sera traitée comme une normale méthode surchargée de la classe thread (ou de l'interface exécutable), et elle sera exécutée dans le contexte du thread actuel, pas dans un nouveau fil en exécution.
public class CallRunMethodTest extends Thread { @Override public void run() { System.out.println("In the run() method: " + Thread.currentThread().getName()); for(int i = 0; i < 5 ; i++) { System.out.println("i: " + i); try { Thread.sleep(300); } catch (InterruptedException ie) { ie.printStackTrace(); } } } public static void main(String[] args) { CallRunMethodTest t1 = new CallRunMethodTest(); CallRunMethodTest t2 = new CallRunMethodTest(); t1.run(); <strong>// calling run() method directly instead of start() method</strong> t2.run(); <strong>// calling run() method directly instead of start() method</strong> } }
Dans l'exemple ci-dessus, deux threads sont créés et la méthode run() est appelée directement sur les threads au lieu d'appeler la méthode start().
In the run() method: main i: 0 i: 1 i: 2 i: 3 i: 4 In the run() method: main i: 0 i: 1 i: 2 i: 3 i: 4
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!