MapleStory Cookie With Halo

☕ JAVA/☕ Class & Method

[JAVA][Thread]join() & yield()

뉴이 NUEY 2024. 12. 9. 16:00
반응형

 

join()
: 지정된 시간동안 특정 쓰레드의 작업을 기다린다.

th1과 th2의 작업이 끝난 뒤 main의 출력문이 실행되었다.

void join() 작업이 모두 끝날 때까지
void join(long millis) 천분의 1초 동안 (1000 = 1초)
void join(long millis, in nanos) 천분의 1총 + 나노초 동안
InterruptedException 처리 필수❗
만약 join()을 사용하지 않으면❓
main쓰레드가 th1과 th2를 기다리지 않고 중간에 실행되는 것이 확인된다.

 


 

yield()
: 남은 시간을 다음 쓰레드에게 양보한다.

  • 실제 쓰레드의 실행시간은 OS스케줄러가 관리하기에 크게 차이는 없지만
  • yield()와 interrupt()를 적절히 사용하면, 응답성과 효율을 높일 수 있다.

  • 위 코드는 while(true)이고 if(false)일 경우 쓰레드는 하는 것 없이 while문만 돌아간다.
  • 이 때 else{ Thread.yield(); }를 주면 main쓰레드가 자신의 시간을 다른 쓰레드에 양보하도록 하는 코드입니다.

static 메서드이기 때문에 Thread.yield()로 적어야 합니다❗

참조영상

반응형