> Java > java지도 시간 > 실행 가능한 run()과 Thread start()의 주요 차이점은 무엇입니까?

실행 가능한 run()과 Thread start()의 주요 차이점은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-21 22:55:31
원래의
117명이 탐색했습니다.

Runnable run() vs. Thread start(): What's the Key Difference?

실행 가능한 run() 및 Thread start()

질문:

동시 Java 프로그래밍의 Runnable 인터페이스는 작업의 진입점인 run() 메서드를 정의합니다. 마찬가지로 Thread 클래스에는 새로운 실행 스레드를 시작하는 start() 메서드가 있습니다. 이 두 가지 방법의 주요 차이점은 무엇입니까?

답변:

기본적인 차이점은 스레드 생성 및 실행에 있습니다.

실행 가능한 실행 (): 스레드 생성 없음

  • 호출 중 Runnable.run()은 새 스레드를 직접 생성하지 않습니다.
  • 대신 현재 실행 스레드 내에서 run() 메서드를 실행합니다.
  • 이 접근 방식은 작업이 가벼울 때 적합합니다. 자체 전용 스레드가 필요하지 않습니다.

스레드 시작(): 스레드 생성

  • Thread.start()를 호출하면 새 실행 스레드가 시작됩니다.
  • 새 스레드 내에서 연결된 Runnable 개체의 run() 메서드가 실행됩니다.
  • Thread.start()를 사용하면 작업을 실행되는 별도의 스레드로 나누어 병렬 처리가 가능해집니다.

예:

Runnable 인터페이스를 구현하는 두 클래스 R1과 R2를 고려해보세요.

class R1 implements Runnable {
    public void run() { ... }
}

class R2 implements Runnable {
    public void run() { ... }
}
로그인 후 복사

다음에서 코드 조각, r1.run() 및 r2.run()이 직접 호출됩니다. 이는 새 스레드가 없음을 의미합니다.

public static void main() {
    R1 r1 = new R1();
    R2 r2 = new R2();

    r1.run();
    r2.run();
}
로그인 후 복사

반대로 다음 코드는 t1과 t2라는 두 개의 새로운 스레드를 생성하고 시작합니다.

public static void main() {
    R1 r1 = new R1();
    R2 r2 = new R2();
    Thread t1 = new Thread(r1);
    Thread t2 = new Thread(r2);

    t1.start();
    t2.start();
}
로그인 후 복사

이 코드에서 r1 및 t2와 관련된 작업은 r2는 새로 생성된 스레드 내에서 동시에 실행됩니다.

위 내용은 실행 가능한 run()과 Thread start()의 주요 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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