Thread Waiting 상태 관련 질문 드립니다.
183
投稿した質問数 24
Thread 가 Wating 상태로 변경될 때
java 에서 Object.wait() 혹은 Thread.join() 을 호출 한다고
스레드 생명주기와 상태 - 21:51
에서 말씀 주셨는데
래퍼런스를 확인해보니 wait(), join() 이외에 LockSupport.park ()라는 동작도 있다고 적혀있습니다.

해당 동작은 어느시점에 이루어지는지 언제까지 대기상태를 유지하는지 궁금합니다 🙂
回答 1
0
안녕하세요, 인프런 AI 인턴입니다.
JuNu님, Java에서 스레드가 WAITING 상태로 변경되는 시점과 관련된 질문에 대해 답변드리겠습니다.
Object.wait(), Thread.join() 외에 LockSupport.park()도 스레드를 대기 상태로 변경시킬 수 있습니다. LockSupport.park()를 호출하게 되면, 스레드는 다른 스레드가 LockSupport.unpark(Thread)를 호출할 때까지 대기 상태를 유지하게 됩니다. 이 방법은 다른 wait/notify와 유사하게 특정 조건이 만족될 때까지 스레드를 블록킹할 수 있도록 합니다.
스레드가 WAITING 상태에서 벗어나기 위해서는 다음과 같은 조건이 필요합니다:
Object.wait(): 다른 스레드가 해당 객체 모니터에 대해notify()나notifyAll()을 호출해야 합니다.
Thread.join(): 대기 중인 스레드가 종료될 때까지 기다립니다.
LockSupport.park():LockSupport.unpark()가 호출되어야 합니다.
각 방법에 대해 스레드는 기본적으로 다른 스레드의 동작(예: notify(), unpark() 등)에 의해 대기 상태를 해제하게 됩니다. 이를 이해하는데 참고가 되셨기를 바랍니다.
추가적인 질문이 있으시면 언제든지 물어봐 주세요! 😊
자세한 이미지는 아래 링크를 참고해주세요:
이미지 링크
멀티스레드 단일스레드
0
56
0
new Condition 부분 질문
0
82
1
13:00 강의 내용 이해 질문
0
99
1
강의 출시 질문 있습니다.
0
117
1
InterruptedExceptionThreadStopExample 질문입니다.
0
94
2
instance.getMyField()의 값이 왜 다른가요?
0
115
1
해당 강의 내용 무단 도용 신고
0
211
2
단일연산변수 api
0
125
0
synchronized 블럭과 메인메모리 반영
0
146
0
실무에서 자바가 제공하는 락을 사용하는 경우
1
243
1
뮤텍스나 세마포어는 busy waiting이 없는 게 맞을까요?
0
159
1
16:50부분에서 타입락 질문드립니다.
0
110
2
16분 7초 뮤텍스 코드 관련해 질문드립니다.
0
160
2
동기화가 보장된다고 하더라도 스레드간 데이터 불일치가 발생할 수 있지 않나요??
0
199
2
리액티브-part2
0
180
2
문자열 풀 값을 이용한 String 변수
0
207
2
스레드 라이브러리는 커널과 같은 역할을 하지 못하나요?
0
173
1
자식 프로세스를 쓰는 이유
0
186
1
커널 모드 전환시 질문이 있습니다!
0
146
1
[공유] setName 시 threadName이 1부터 시작하는 이유
0
177
1
synchronized = 모니터
0
285
2
Thread의 Context Switching 문의드립니다.
1
256
1
동기 & 논블록킹 질문 드립니다.
0
232
2
AtomicIntegerGetAndUpdateExample 예시가 부자연스럽습니다.
0
152
1

