Maison  >  Article  >  Java  >  En Java, quand appeler Thread.run() au lieu de Thread.start() ?

En Java, quand appeler Thread.run() au lieu de Thread.start() ?

WBOY
WBOYavant
2023-09-15 12:13:021198parcourir

En Java, quand appeler Thread.run() au lieu de Thread.start() ?

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.

Exemple

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().

Sortie

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer