class C{}

class A extends Thread{
public A()
{ C c = new C(); }
public void run()
{
B b = new B();
b.c = c; --> 동기화를 위해 객체 복사.
b.start();
}

class B extends Thread{}

위와 같은 세가지 클래스 있습니다.

B 스레드는 A가 생성 합니다. C는 sync를 시켜주기 위해 존재 합니다.

B 스레드 내부에서 다음과 같이 설정 해 줬습니다.

synchronized(c)
{
try{
c.wait();
}catch(InterruptedException e){}
}

그리고 A 스레드에서 반복적으로 notify를 해주는데요

문제는 wait()가 일어났다가 다시 곧바로 잠든 다는 겁니다.

즉, synchronized 밖으로 나가질 않네요. 왜 이런 현상이 생기는 지요.

wait()는 한번만 쓸 수 있는 건가요? 이 루틴이 반드시 필요합니다.

도움 부탁 드릴게요.