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

Java에서 Thread.start()와 Thread.run()의 차이점은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-16 19:00:03
원래의
471명이 탐색했습니다.

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

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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