Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 Thread.start() 대신 Thread.run()을 언제 호출해야 합니까?


start()를 호출할 때 스레드의 메소드는 스레드가 실행을 시작하고 run() 스레드의 메소드는 Java Virtual Machine(JVM)에 의해 호출됩니다. . run()을 직접 호출하는 경우 방법이 없으면 정상 으로 처리됩니다. 재정의된 방법 스레드 클래스(또는 실행 가능한 인터페이스)의 클래스이고 새 스레드가 아닌 현재 스레드의 컨텍스트 내에서 실행됩니다.

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(); // calling run() method directly instead of start() method
      t2.run(); // calling run() method directly instead of start() method
   }
}

위의 예에서는 두 개의 스레드가 생성되고 start() 메서드를 호출하지 않고 스레드에서 run() 메서드가 직접 호출됩니다.

출력

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