dykwon.log
로그인
dykwon.log
로그인
Multi Thread(멀티스레드) - 2 (스레드 상태와 상태 제어)
dykwon
·
2024년 1월 16일
팔로우
0
Java
스레드 상태
스레드 객체 생성 후 start() 메소드를 호출하면, Runnable 상태가 된다.
이후, 실행 대기상태에 있는 스레드가 스케줄링으로 선택이 되면, run() 메소르를 실행하고 CPU를 점유한다.
이때 상태를 우리는 실행상태(Running)이라고 한다.
실행 대기 상태로 다시 넘어가려면, 일시 정지 상태를 거쳐 이동한다.
WAITING : 다른 스레드가 통지할 때까지 기다리는 상태
TIMED_WAITING : 주어진 시간 동안 기다리는 상태(Thread.sleep())
BLOCKED : 사용하고자 하는 객체의 락이 풀릴때까지 기다리는 상태
Thread가 완전히 종료되면, Terminated 상태가 된다.
상태제어
Thread.sleep(1000) : 1초동안 일시정지
Thread.yield() : 해당 스레드의 실행을 양보한다.
(A, B 스레드 실행 후 A 스레드에 yield 실행 시, B 스레드로만 동작)
Thread.join() : 다른 스레드의 종료를 기다림
(threadA에서 threadB를 start() 메소드를 통해 실행 후, threadB.join() 호출 시 스레드 B가 끝날때까지 스레드 A는 일시정지 되었다가 실행된다.)
wait() : 동기화 블록내 스레드를 일시정지 상태로 만든다. (Object Class의 Method)
notify() : 일시정지 상태에 있는 스레드를 실행 대기(Runnable 상태)로 만든다 (Object Class의 Method)
interrupt() : 스레드에 interruptedExection을 발생시켜 안전하게 종료한다.
스레드가 실행상태에 있을때는 발생하지 않고, 스레드가 일시정지 상태가 된 이후에 동작한다 (Object Class의 Method)
dykwon
Programmer, who turns ideas into value
팔로우
이전 포스트
Java Lambda와 람다대수
다음 포스트
Multi Thread(멀티스레드) - 3 (스레드 풀)
0개의 댓글
댓글 작성