코드 그라데이션
Day30-31. Thread(쓰레드) (2) join() 본문
join()
- 자기도 하나의 쓰레드지만, 다른 하나가 끝날 때까지 기다렸다가 실행하는 것.
(쓰레드 만든(부른) 애가.)
* join() 을 걸면 main에 있는 애가 무조건 가장 마지막으로 기다렸다가 받아서 동작함.
* 그런데 이것도 하나의 실행 흐름이기 때문에 main이 아닌 다른 곳에서도 join을 쓰면 걔가 마지막까지 기다렸다가 동작.
실생활에서 예시를 찾아보면
- 식당에서, 종업원들이 다 집에 가고 난 후 사장이 최종 점검하고 문 닫고 퇴근하는 것.
join() 예시 코드
package Day30;
class DThread extends Thread {
DThread(String str) {
setName(str); // 쓰레드 이름을 지정할 수 있다.
// 이건 쓰레드 안에 기본적으로 제공하는 메서드.
}
public void run() { // 무조건 4번형식이다 run은
for(int i = 1; i<=10; i++) {
System.out.println(getName() + i);
}
System.out.println("완료! " + getName());
}
}
public class ExDoubleThread2 {
public static void main(String[] args) throws InterruptedException {
DThread t1 = new DThread("자바");
DThread t2 = new DThread("스프링");
System.out.println("쓰레드 동작 전 ============");
t1.start();
t2.start(); // 얘네들 먼저 시작을 걸어놓고 join()을 불러야.
t1.join(); // 예외처리 필요
t2.join();
System.out.println("쓰레드 동작 후 ==============="); // 이게 가장 마지막에 나옴 무조건. 기다려준다고 했기 때문에
}
}
실행 결과
- 가운데는 중구난방
쓰레드 동작 전 ============
자바1
자바2
자바3
자바4
자바5
자바6
자바7
자바8
자바9
스프링1
스프링2
자바10
스프링3
완료! 자바
스프링4
스프링5
스프링6
스프링7
스프링8
스프링9
스프링10
완료! 스프링
쓰레드 동작 후 ===============
728x90
'Java > Mega' 카테고리의 다른 글
Day31. Thread(쓰레드) (4) 쓰레드 사이의 통신 (0) | 2023.04.26 |
---|---|
Day30-31. Thread(쓰레드) (3) Synchronized (0) | 2023.04.26 |
Day30-31. Thread(쓰레드) (1) 기본 개념 (0) | 2023.04.26 |
<보충> Day19. Has 관계 두 번째 예제 설명 슬라이드 파보기 (0) | 2023.04.25 |
Day30-2. 예외처리(Exception) (0) | 2023.04.24 |
Comments