자바에서 join 메서드는 쓰레드 간의 실행 순서를 조절하기 위해 사용됩니다. join 메서드를 사용하면 하나의 쓰레드가 다른 쓰레드의 실행을 완료할 때까지 기다릴 수 있습니다.
1. join() 메서드
이 메서드는 특정 쓰레드의 실행이 완료될 때까지 현재 쓰레드를 일시 정지시킵니다. 즉, 다른 쓰레드의 작업이 완료될 때까지 대기합니다.
Thread thread1 = new Thread(() -> {
// 쓰레드1의 작업
});
Thread thread2 = new Thread(() -> {
// 쓰레드2의 작업
});
thread1.start();
thread2.start();
try {
thread1.join(); // 쓰레드1의 실행 완료를 기다림
thread2.join(); // 쓰레드2의 실행 완료를 기다림
} catch (InterruptedException e) {
e.printStackTrace();
}
이 예제에서 thread1.join()은 메인 쓰레드가 thread1의 실행을 기다리도록 하고, thread2.join()은 메인 쓰레드가 thread2의 실행을 기다리도록 합니다.
2. join(long millis) 메서드
이 메서드는 특정 쓰레드의 실행이 완료되거나 지정된 시간이 경과할 때까지 현재 쓰레드를 일시 정지시킵니다.
Thread thread1 = new Thread(() -> {
// 쓰레드1의 작업
});
Thread thread2 = new Thread(() -> {
// 쓰레드2의 작업
});
thread1.start();
thread2.start();
try {
thread1.join(2000); // 쓰레드1의 실행 완료를 최대 2초까지 기다림
thread2.join(3000); // 쓰레드2의 실행 완료를 최대 3초까지 기다림
} catch (InterruptedException e) {
e.printStackTrace();
}
이 예제에서 thread1.join(2000)은 메인 쓰레드가 thread1의 실행을 최대 2초까지 기다리도록 하고, thread2.join(3000)은 메인 쓰레드가 thread2의 실행을 최대 3초까지 기다리도록 합니다.
이렇게 join 메서드를 사용하면 쓰레드 간의 실행 순서를 조절할 수 있으며, 특히 메인 쓰레드가 다른 쓰레드의 작업이 완료될 때까지 기다려야 하는 상황에서 유용합니다.
With ChatGPT
'JAVA > 포스팅' 카테고리의 다른 글
자바 람다식 (0) | 2023.11.22 |
---|---|
자바 쓰레드 fork 프레임웍 (0) | 2023.11.22 |
자바 쓰레드 volatile (0) | 2023.11.22 |
자바 쓰레드 Condition을 이용한 동기화 (0) | 2023.11.22 |
자바 쓰레드 Lock을 이용한 동기화 (0) | 2023.11.22 |