자바에서 쓰레드의 실행을 제어하기 위한 주요 메서드 및 기법은 다음과 같습니다.
1. start() 메서드
- start() 메서드를 호출하여 쓰레드를 실행시킵니다.
- 내부적으로 JVM이 새로운 쓰레드를 생성하고 run() 메서드를 호출합니다.
Thread myThread = new MyThread();
myThread.start();
2. join() 메서드
- join() 메서드를 호출한 쓰레드는 해당 쓰레드의 종료를 기다립니다.
- 다른 쓰레드에서 join()을 호출한 경우, 해당 쓰레드가 종료될 때까지 대기합니다.
Thread myThread = new MyThread();
myThread.start();
myThread.join(); // 현재 쓰레드가 myThread의 종료를 기다림
3. sleep() 메서드
- sleep() 메서드를 사용하여 쓰레드를 일정 시간 동안 정지시킬 수 있습니다.
- 예외가 발생하거나 인터럽트가 걸릴 때까지 지정된 시간 동안 대기합니다.
try {
Thread.sleep(1000); // 1초 동안 정지
} catch (InterruptedException e) {
e.printStackTrace();
}
4. yield() 메서드
- yield() 메서드를 호출한 쓰레드는 다른 동등한 우선순위의 쓰레드에게 실행 기회를 양보합니다.
- 어떤 쓰레드가 실행될지는 JVM에 의해 결정됩니다.
Thread.yield(); // 실행 기회 양보
5. interrupt() 메서드
- interrupt() 메서드를 호출하여 쓰레드에게 인터럽트를 걸 수 있습니다.
- 인터럽트가 걸리면 InterruptedException이 발생합니다.
myThread.interrupt(); // 쓰레드에게 인터럽트 걸기
6. isAlive() 메서드
- isAlive() 메서드를 사용하여 쓰레드가 현재 실행 중인지 여부를 확인할 수 있습니다.
- 실행 중이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
if (myThread.isAlive()) {
System.out.println("쓰레드가 실행 중입니다.");
} else {
System.out.println("쓰레드가 종료되었습니다.");
}
7. stop() 메서드 (비권장)
- stop() 메서드를 사용하여 강제로 쓰레드를 종료할 수 있습니다.
- 그러나 이 메서드는 사용하지 않는 것이 좋으며, 쓰레드 안전성에 문제를 일으킬 수 있습니다.
myThread.stop(); // 비권장: 강제로 쓰레드 종료
위의 메서드들을 조합하여 쓰레드의 실행을 제어할 수 있습니다. 종료 시점, 실행 순서, 대기 등의 제어가 필요한 경우에는 이러한 메서드들을 적절히 활용하여 구현할 수 있습니다.
With ChatGPT
'JAVA > 포스팅' 카테고리의 다른 글
자바 쓰레드 synchronized를 이용한 동기화 (0) | 2023.11.21 |
---|---|
자바 쓰레드의 동기화 (0) | 2023.11.21 |
자바 데몬 쓰레드(daemon thread) (0) | 2023.11.21 |
자바 쓰레드 그룹(thread group) (0) | 2023.11.21 |
자바 쓰레드의 우선순위 (0) | 2023.11.21 |