Thread.start()와 Thread.run()의 차이점 이해
Java에서 멀티스레딩으로 작업할 때 프로그래머는 두 가지 핵심을 접하게 됩니다. 메소드: Thread.start() 및 Thread.run(). 이름에서 유사한 기능을 암시할 수 있지만 목적은 분명히 다릅니다.
이러한 메서드의 기능은 무엇입니까?
Thread.start():
Thread.run():
Thread.run을 호출하면 안 되는 이유 ()?
Thread.run()이 run() 메서드도 실행한다면 왜 대신에 이것을 간단히 호출하면 안 될까요? Thread.start()? 그 이유는 멀티스레딩이 제공하는 격리성과 독립적 실행에 있습니다.
Thread.run()을 호출하면 별도의 스레드가 아닌 현재 스레드에서 코드가 실행됩니다. 이는 run() 메서드의 모든 코드가 여전히 현재 스레드의 리소스와 상호 작용하고 영향을 미친다는 것을 의미합니다. 이는 작업의 동시 실행을 허용하는 멀티스레딩의 의도된 목적이 아닙니다.
차이점을 보여주는 예:
다음을 고려하십시오. 코드:
public class ThreadExample { public static void main(String[] args) { Thread t1 = new Thread(() -> System.out.println("Thread 1")); Thread t2 = new Thread(() -> System.out.println("Thread 2")); // Here, we call Thread.start() and Thread.run(): t1.start(); // Starts Thread 1 in a separate thread t2.run(); // Executes Thread 2 in the current thread System.out.println("Main Thread"); } }
출력:
Thread 1 Main Thread
t1에서 Thread.start()를 호출하면 새 스레드가 생성되고 해당 스레드에서 run() 메서드가 실행됩니다. , "스레드 1"을 인쇄할 수 있습니다. 반면에 t2에서 Thread.run()을 호출하면 새 스레드 생성을 우회하여 현재(즉, 기본) 스레드에서 run() 메서드가 실행됩니다. 이로 인해 "스레드 2"는 별도의 스레드에서 실행되지 않으므로 인쇄되지 않습니다.
위 내용은 Java의 진정한 멀티스레딩에 `Thread.start()`가 필수적인 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!