https://youtu.be/uY_xbLi_cSA?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp
📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다.
[join( )]
- 지정된 시간동안 특정 쓰레드가 작업하는 것을 기다려준다.
void join() // 작업이 모두 끝날 때까지
void join(long millis) // 천분의 일초 동안
void join(long millis, int nanos) // 천분의 일초 + 나노초 동안
- 예외처리를 해야 한다.
package javajungsuk;
public class Java13_11 {
static long startTime = 0;
public static void main(String[] args) {
ThreadEx11_1 th1 = new ThreadEx11_1();
ThreadEx11_2 th2 = new ThreadEx11_2();
th1.start();
th2.start();
startTime = System.currentTimeMillis();
try {
th1.join();//main쓰레드가 th1의 작업이 끝날 때까지 기다린다.
th2.join();//main쓰레드가 th2의 작업이 끝날 때까지 기다린다.
} catch(InterruptedException e) {}
System.out.print("소요시간: " + (System.currentTimeMillis()-startTime));
}
}
class ThreadEx11_1 extends Thread{
public void run() {
for (int i = 0; i < 300; i++)
System.out.print(new String("-"));
}
}
class ThreadEx11_2 extends Thread{
public void run() {
for (int i = 0; i < 300; i++)
System.out.print(new String("|"));
}
}
[yield( )]
- 남은 시간을 다음 쓰레드에 양보하고, 자신(현재 쓰레드)은 실행 대기한다.
- yield( )와 interrupt( )를 적절히 사용하면, 응답성과 효율성을 높일 수 있다.
'Java > 객체지향' 카테고리의 다른 글
[객체지향][쓰레드/thread] - 쓰레드 동기화의 단점을 보완하기 위한 wait()와 notify() (0) | 2022.03.04 |
---|---|
[객체지향][쓰레드/thread] - 쓰레드의 동기화(synchronization) (0) | 2022.03.04 |
[객체지향][쓰레드/thread] - suspend(), resume(), stop() (0) | 2022.03.02 |
[객체지향][쓰레드/thread] - sleep(), interrupt() (0) | 2022.03.02 |
[객체지향][쓰레드/thread] - 데몬 쓰레드, 쓰레드의 상태 (0) | 2022.03.01 |