JAVA/포스팅

자바 쓰레드 start()와 run()

짜집퍼박사(짜박) 2023. 11. 21. 23:48

자바에서 쓰레드를 생성하고 실행시키기 위해서는 start()와 run() 메서드를 사용합니다. 이 두 메서드는 각각 쓰레드의 생성 및 실행에 관련된 역할을 합니다.

 

1. start() 메서드

start() 메서드는 Thread 클래스의 메서드로, 운영체제에게 새로운 쓰레드를 생성하라고 요청합니다. 이 메서드를 호출하면 다음과 같은 일이 발생합니다.

 

- 새로운 쓰레드가 생성됩니다.
- 새로운 쓰레드는 run() 메서드를 실행하기 위해 대기 상태로 들어갑니다.
- 운영체제가 스케줄링에 따라 생성된 쓰레드를 실행시킵니다.

Thread myThread = new Thread(new MyRunnable());
myThread.start();

 

2. run() 메서드

run() 메서드는 실제로 쓰레드에서 수행하고자 하는 작업을 정의하는 메서드입니다. start() 메서드가 호출되면 run() 메서드가 새로운 쓰레드에서 실행됩니다. 만약 직접 run() 메서드를 호출한다면, 현재 스레드에서 해당 메서드가 실행될 뿐이며 별도의 쓰레드는 생성되지 않습니다.

class MyRunnable implements Runnable {
    public void run() {
        // 실제로 수행하고자 하는 작업을 정의
        System.out.println("Hello from MyRunnable!");
    }
}

public class Main {
    public static void main(String[] args) {
        MyRunnable myRunnable = new MyRunnable();

        // 직접 run() 메서드 호출
        myRunnable.run();

        // start() 메서드 호출하여 별도의 쓰레드에서 run() 실행
        Thread myThread = new Thread(myRunnable);
        myThread.start();
    }
}

 

직접적으로 run() 메서드를 호출하는 것은 메인 스레드에서 해당 메서드를 동기적으로 실행하는 것이므로, 별도의 쓰레드가 생성되지 않습니다. 따라서 쓰레드를 생성하고 실행하려면 start() 메서드를 사용해야 합니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 멀티쓰레드  (0) 2023.11.21
자바 싱글쓰레드  (0) 2023.11.21
자바 쓰레드의 구현과 실행  (0) 2023.11.21
자바 쓰레드(Thread)  (0) 2023.11.21
자바 애너테이션 타입 정의하기  (0) 2023.11.21