inflearn logo
강의

講義

知識共有

Javaの並行性プログラミング[Reactive Programming Part.1]

スレッドのライフサイクルと状態

Thread Waiting 상태 관련 질문 드립니다.

183

JuNu

投稿した質問数 24

0

Thread 가 Wating 상태로 변경될 때
java 에서 Object.wait() 혹은 Thread.join() 을 호출 한다고
스레드 생명주기와 상태 - 21:51

에서 말씀 주셨는데
래퍼런스를 확인해보니 wait(), join() 이외에 LockSupport.park ()라는 동작도 있다고 적혀있습니다.

image.png

 

해당 동작은 어느시점에 이루어지는지 언제까지 대기상태를 유지하는지 궁금합니다 🙂


java 동시성 multithread synchronisation

回答 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

JuNu님, Java에서 스레드가 WAITING 상태로 변경되는 시점과 관련된 질문에 대해 답변드리겠습니다.

Object.wait(), Thread.join() 외에 LockSupport.park()도 스레드를 대기 상태로 변경시킬 수 있습니다. LockSupport.park()를 호출하게 되면, 스레드는 다른 스레드가 LockSupport.unpark(Thread)를 호출할 때까지 대기 상태를 유지하게 됩니다. 이 방법은 다른 wait/notify와 유사하게 특정 조건이 만족될 때까지 스레드를 블록킹할 수 있도록 합니다.

스레드가 WAITING 상태에서 벗어나기 위해서는 다음과 같은 조건이 필요합니다:

  1. Object.wait(): 다른 스레드가 해당 객체 모니터에 대해 notify()notifyAll()을 호출해야 합니다.
  2. Thread.join(): 대기 중인 스레드가 종료될 때까지 기다립니다.
  3. 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