반응형
package multi_thread.thread_join;
public class SumThread extends Thread{
private long sum;
public long getSum() {
return sum;
}
public void setSum(long sum) {
this.sum = sum;
}
public void run() {
for (int i = 1 ; i <= 100 ; i++) {
sum += i;
}
}
}
package multi_thread.thread_join;
public class JoinExample {
public static void main(String[] args) {
SumThread sumThread = new SumThread();
sumThread.start();
try {
sumThread.join();
// sumThread를 일시중지하는게 아니라 sumThread가 다 종료될 때까지
// 호출한 스레드(여기선 메인스레드)를 일시정지시킵니다.
}catch (InterruptedException e) {
}
System.out.println("1 ~ 100 합 : " + sumThread.getSum());
}
}
join이라는 메소드는 사용 스레드가 전부 끝날 때 까지 다른 스레드를 중지시키는 역할입니다.
스레드는 번갈아 실행 되기 때문에 메인 스레드를 멈추지 않으면 연산하기도 전에 Sum 값을 출력해버려 0이 나오게됩니다.
그래서 join을 걸어서 메인스레드를 멈추게 한 것입니다.
그리고 해당 스레드가 다 끝나면 모든 스레드를 다시 정상 실행시킵니다.
반응형
'[Java] > [Java]' 카테고리의 다른 글
[Java] 자바 멀티스레드 [Multi-Thread] 스레드 중지 (stop플래그, interrupt()) (0) | 2021.08.06 |
---|---|
[Java] 자바 멀티스레드 [Multi-Thread] 스레드 번갈아 실행시키기[공유객체] (wait(), notify()) (0) | 2021.08.05 |
[Java] 자바 멀티스레드 [Multi-Thread] 실행 대기 상태 만들기 (yield()) [실행 양보] (0) | 2021.08.04 |
[Java] 자바 멀티스레드 [Multi-Thread] 공유 객체 임계영역 설정 (synchronized) (0) | 2021.08.04 |
[Java] 자바 멀티스레드 [Multi-Thread] 스레드 우선순위설정하기 (0) | 2021.08.04 |