Skip to Content
Suffering builds character

3. 스레드 API

멀티 스레드 기반으로 동작하는 프로그램 코드를 작성하기 위해서는 각 스레드들의 상태를 프로그램의 동작 순서에 맞게 적절한 시점에 변경시킬 수 있어야 함

자바에서는 개발자가 스레드들의 상태를 전환할 수 있도록 메서드를 호출할 수 있는 방식으로 API를 제공함

1. sleep( ), 실행 중인 스레드를 잠시 대기 상태(Timed Waiting)로 전환하기

sleep( )은 정해진 시간 동안 현재 실행 중이던 스레드의 실행을 잠시 멈추게 하고 Timed waiting 상태로 전환해주는 메서드로,

해당 시간이 경과하면 다시 실행 대기 상태(Runnable)로 전환시킬 때 사용됨

2. join( ), 다른 스레드가 작업을 마칠 때까지 현재 스레드를 대기 상태로 전환하기

join( ) 메서드는 다른 스레드가 종료될 때까지 자신의 (스레드) 실행을 중지하고 대기상태로 전환해주는 메서드로,

다른 스레드의 작업이 모두 종료되면 실행대기 상태로 전환되어 자신의 작업을 마저 수행할 때 사용됨

주로 스레드의 순서를 제어하거나, 다른 스레드의 작업을 기다려야 하거나 스레드 간 순차적인 흐름을 구성하고자 할 때 활용할 수 있음

3. interrupt( ), 다른 스레드에게 interrupt 신호를 보내 실행 흐름을 중단하기

interrupt( )는 현재 실행 중인 자신의 스레드나 다른 스레드의 실행을 중단하고 다른 처리 로직을 수행할 수 있도록 방해 신호를 전달하는 메서드로,

인터럽트를 받은 스레드는 현재 실행 흐름이 중단되고, 인터럽트 예외(InterruptedException)를 먼저 처리하도록 강제됨

그 외에 현재 자신의 스레드가 인터럽트되었는지 확인할 때 사용하는 isInterrupted( ), interrupted( ) 등이 있음

Last updated on