Thread.start()와 Thread.run()의 차이점 이해
Java에서 스레드로 작업할 때 다음을 이해하는 것이 중요합니다. start() 및 run() 메서드의 역할. 스레드의 수명 주기를 관리하는 데 있어 서로 다른 기능을 수행합니다.
Thread.start() 및 Thread.run()
Thread.start() 메서드는 초기화됩니다. run() 메소드에 정의된 코드가 있는 새 스레드. 호출 시 별도의 실행 스레드를 생성하고 start()를 호출한 스레드와 동시에 run() 메서드를 실행합니다.
반면 Thread.run()은 run()의 코드를 직접 실행합니다. 현재 스레드 내의 메소드. 새 스레드를 생성하지 않습니다. 즉, 코드가 호출 스레드와 순차적으로 실행됩니다.
차이를 보여주는 예
두 방법의 차이점을 설명하려면 , 다음 예를 고려하십시오.
class MyThread extends Thread { @Override public void run() { for (int i = 0; i < 10; i++) { System.out.println("Thread " + this.getName() + ": " + i); } } } public class Main { public static void main(String[] args) { MyThread thread1 = new MyThread(); // Calling Thread.start() thread1.start(); // Calling Thread.run() directly thread1.run(); } }
출력:
Thread Thread-0: 0 Thread Thread-0: 1 Thread Thread-1: 0 Thread Thread-1: 1 Thread Thread-1: 2 Thread Thread-1: 3 Thread Thread-1: 4 Thread Thread-1: 5 Thread Thread-1: 6 Thread Thread-1: 7 Thread Thread-1: 8 Thread Thread-1: 9
이 예에서 start()를 호출하면 다음과 같은 새 스레드(Thread-0)가 생성됩니다. 메인 스레드와 동시에 run() 메서드를 실행합니다. 결과적으로 출력은 두 스레드의 메시지를 인터리브합니다.
그러나 run()을 직접 호출하면 새 스레드가 생성되지 않습니다. 대신, 메인 스레드(Thread-1) 내에서 run() 메서드를 실행합니다. 결과적으로 run() 메서드의 메시지는 start() 호출 이후 순차적으로 인쇄됩니다.
위 내용은 Java에서 Thread.start()와 Thread.run()의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!