자바 쓰레드 질문 join
CountThread a = new CountThread("쓰레드 1번");
CountThread b = new CountThread("쓰레드 2번");
CountThread c = new CountThread("쓰레드 3번");
try {
a.start();
b.start();
c.start();
a.join();
b.join();
c.join();
}
catch (InterruptedException e) {
}
이렇게 실행하면
쓰레드 1번 시작
쓰레드 2번 시작
쓰레드 2번 종료
쓰레드 3번 시작
쓰레드 3번 종료
쓰레드 1번 종료
이런식으로 랜덤하게 쓰레드가 실행되고 종료되잖아요
CountThread a = new CountThread("쓰레드 1번");
CountThread b = new CountThread("쓰레드 2번");
CountThread c = new CountThread("쓰레드 3번");
try {
a.start();
a.join();
b.start();
b.join();
c.start();
c.join();
}
catch (InterruptedException e) {
}
쓰레드 1번 시작
쓰레드 1번 종료
쓰레드 2번 시작
쓰레드 2번 종료
쓰레드 3번 시작
쓰레드 3번 종료
이렇게 수정하면 1번쓰레드가 실행되고 종료후에
2번 쓰레드가 실행되고 2번쓰레드 종료후
3번 쓰레드가 실행되고 3번이 종료된 후 메인 쓰레드가 종료되죠
join 이 정확히 어떤일을 하는지 설명좀 부탁드립니다.
제가 하고 싶은건 3개의 쓰레드를 실행하고
3개의 쓰레드가 모두 종료되면(쓰레드 순서는 상관없고 동시에 실행만되면됩니다.)
메인에서 3개의 쓰레드가 계산한 결과를 출력하는걸 하고 싶은데
임의로 메인에서 Thread.sleep(100) 이런식으로 기다릴수도 없도
어떻게 하면 메인에서 쓰레드를 생성시키고 그 쓰레드들이 모두 종료된다음에
결과를 출력할 수 있을까요? 그리고 생성된 쓰레드들은 동시에 실행되어야 합니다.
자식 쓰레드가 일을
자식 쓰레드가 일을 마치고 종료하는 것이면 join을 쓰시면 되고 아니라면 wait/notify를 쓰시면 됩니다.
댓글 달기