0
, 나는 자식 스레드 run()
방법 내부 자식 스레드 을 시작, 자식 스레드를 통지하지 않고, 자식 스레드에 대한 join()
메서드를 호출하는 주요 방법에서 wait()
방법 를 호출합니다.스레드에 통보 문제
주 스레드와 하위 스레드 모두 여전히 알려진 동작인지 알 수 있습니까? 왜?
, 나는 자식 스레드 run()
방법 내부 자식 스레드 을 시작, 자식 스레드를 통지하지 않고, 자식 스레드에 대한 join()
메서드를 호출하는 주요 방법에서 wait()
방법 를 호출합니다.스레드에 통보 문제
주 스레드와 하위 스레드 모두 여전히 알려진 동작인지 알 수 있습니까? 왜?
을 호출하면 notify
까지 하위 스레드를 차단하고 join
을 호출하면 하위 스레드가 종료 될 때까지 주 스레드를 차단합니다. 따라서 예측 가능한 교착 상태가 발생합니다. 나는이 행동을 단지 "알려진"것이라고 부르지 않을 것이지만, "지정된대로"라고 부름니다.
그것은 '교착 상태'입니다. –
여기에 코드를 게시하십시오. –
디버거에서 스레드가 둘 다 "실행 중"이라는 것을 의미합니까? 그렇다면 디버거가 스레드 상태를 표시하지 않고 디버거에서 스레드를 일시 중지/일시 중지했는지 여부를 표시하기 때문입니다. – SamYonnou
동기화 된 컨텍스트가 아닌 경우 wait() 메서드를 어떻게 호출합니까? (적어도 당신은 언급 한 did'nt) 그것은 IllegalMonitorStateException 던져해야합니다. – clinton