스레드 실행제어

개발하는개발자·2022년 9월 8일
0

Java Thread

목록 보기
7/10

스레드 스케줄링 메서드

sleep() : 지정된 시간동안 스레드를 일시정지시킨다. 지정한 시간이 지나고 나면, 자동적으로 다시 실행대기상태가 된다.

join() : 지정된 시간동안 스레드가 실행되도록 한다. 지정된 시간이 지나거나 작업이 종료되면 join()을 호출한 스레드로 다시 돌아와 실행을 계속한다.

interrupt() : 일시정지상태인 스레드를 개워 실행대기 상태로 만든다. InterruptedException으로 인터럽트를 발생시킨다.

suspend() : 스레드를 일시정지시킨다.

yield() : 실행중 다른 스레드에게 실행을 양보하고 대기상태가 된다.

interrupt

interrupt() : 스레드의 interrupted상태를 false에서 true로 변경.
isInterrupted() : 스레드의 interrupted 상태를 반환.
interrupted() : 현재 스레드의 interrupted 상태를 반환 후, false로 변경

실행중인 스레드를 종료하고 싶을때 사용한다.
sleep(), wait(), join()을 통해 일시정지 상태에 있을때 interrupt()를 실행하면 InterruptedException이 발생하고 스레드는 '실행대기' 상태로 변경된다. 스레드가 바로 종료되는 것이 아니고 interrupt를 사용하면 스레드 객체의 boolean 플래그가 true가 되고, 스레드가 일시정지 상태가 되었을때 InterruptedException이 발생하여 종료된다.

yield

자신의 실행시간을 포기하고 다음 차례 스레드에게 양보한다.

join

자신이 하던 작업을 잠시 멈추고 다른 스레드가 지정된 시간동안 작업을 수행하게 한다. 시간을 인자값으로 지정하지 않으면 작업을 모두 마칠 때까지 기다리게 된다.

profile
하루에 하나씩 배우자

0개의 댓글