2012-12-05 2 views
0

, 나는 자식 스레드 run() 방법 내부 자식 스레드 을 시작, 자식 스레드를 통지하지 않고, 자식 스레드에 대한 join() 메서드를 호출하는 주요 방법에서 wait() 방법 를 호출합니다.스레드에 통보 문제

주 스레드와 하위 스레드 모두 여전히 알려진 동작인지 알 수 있습니까? 왜?

+2

여기에 코드를 게시하십시오. –

+0

디버거에서 스레드가 둘 다 "실행 중"이라는 것을 의미합니까? 그렇다면 디버거가 스레드 상태를 표시하지 않고 디버거에서 스레드를 일시 중지/일시 중지했는지 여부를 표시하기 때문입니다. – SamYonnou

+0

동기화 된 컨텍스트가 아닌 경우 wait() 메서드를 어떻게 호출합니까? (적어도 당신은 언급 한 did'nt) 그것은 IllegalMonitorStateException 던져해야합니다. – clinton

답변

4

을 호출하면 notify까지 하위 스레드를 차단하고 join을 호출하면 하위 스레드가 종료 될 때까지 주 스레드를 차단합니다. 따라서 예측 가능한 교착 상태가 발생합니다. 나는이 행동을 단지 "알려진"것이라고 부르지 않을 것이지만, "지정된대로"라고 부름니다.

+0

그것은 '교착 상태'입니다. –