> Java > java지도 시간 > Java에서 Thread.start()와 Thread.run()을 호출하는 것의 차이점은 무엇입니까?

Java에서 Thread.start()와 Thread.run()을 호출하는 것의 차이점은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-13 11:17:02
원래의
692명이 탐색했습니다.

What is the difference between calling Thread.start() and Thread.run() in Java?

Java에서 Thread.start()와 Thread.run() 호출

소개:
In Java의 멀티스레딩은 작업의 동시 실행을 위한 메커니즘을 제공합니다. 멀티스레딩의 주요 구성 요소 중 하나는 Thread 클래스입니다. 스레드를 실행하려면 Thread.start() 또는 Thread.run()을 호출하면 됩니다. 이 문서의 목적은 이 두 가지 방법의 차이점을 명확히 하고 차이점을 보여주는 것입니다.

차이점 이해:
스레드 객체에서 Thread.start()를 호출하면 새로운 실행 스레드. 이는 운영 체제의 스레드 스케줄러에게 새 스레드를 생성하고 실행을 예약하도록 지시합니다. 일단 시작되면 스레드는 독립되어 메인 스레드와 동시에 실행됩니다.

반면 스레드 객체에서 Thread.run()을 호출하면 단순히 현재 스레드에서 스레드의 run() 메서드가 실행됩니다. . 이 경우 스레드는 독립적으로 실행되도록 예약되지 않으며 run() 메서드가 호출된 후 순차적으로 run() 메서드가 실행됩니다.

Run을 호출하는 대신 스레드를 시작하는 이유는 무엇입니까?
스레드를 시작하면 직접 호출하는 것보다 여러 가지 이점이 있습니다. run():

  • 동시성: 스레드를 시작하면 여러 스레드가 동시에 실행되어 사용 가능한 처리 리소스를 활용하고 애플리케이션 성능이 향상됩니다.
  • 스레드 관리: 운영 체제는 예약 및 컨텍스트 전환을 포함하여 스레드를 관리하여 애플리케이션을 이러한 스레드로부터 해방시킵니다.
  • 코드 단순성: 스레드를 시작하는 것은 run()을 직접 호출하여 스레드를 수동으로 관리하는 것에 비해 동시성을 달성하는 더 간결하고 간단한 방법입니다.

차이를 보여주는 예:
차이점을 설명하려면 다음을 고려하세요. 예:

public class ThreadExample extends Thread {

    @Override
    public void run() {
        System.out.println("Thread is running...");
    }

    public static void main(String[] args) {
        ThreadExample thread = new ThreadExample();

        // Call the run() method directly - executed in the main thread
        thread.run();

        // Start the thread - runs concurrently with the main thread
        thread.start();
    }
}
로그인 후 복사

이 코드가 run() 메서드 호출로 실행되면 출력은 다음과 같습니다.

Thread is running...
로그인 후 복사
로그인 후 복사

이 경우 run() 메서드는 다음에서 실행됩니다. 메인 스레드이며 동시성이 없습니다. 그러나 start() 메서드 호출을 사용하여 코드를 실행하면 출력은 다음과 같습니다.

Thread is running...
로그인 후 복사
로그인 후 복사

... 뒤에 메인 스레드의 출력이 나타나 스레드가 동시에 실행 중임을 나타냅니다.

위 내용은 Java에서 Thread.start()와 Thread.run()을 호출하는 것의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿