세 개의 스레드를 사용하여 번갈아 인쇄하려고합니다. 첫 번째 스레드는 하나의 숫자를 인쇄하고 두 번째 스레드는 두 번째 숫자를 인쇄 한 다음 세 번째 스레드를 인쇄해야합니다. 공유 정적 정수를 사용하여 구현하려고 시도했지만 코드에 IllegalMonitorStateException이 표시됩니다. 누구든지 이것을 확인하고 내 실수를 말할 수 있습니까?
class ThreadRevisit extends Thread
{
static Integer number;
int num;
ThreadRevisit(String name,Integer number,int num)
{
super(name);
this.number=number;
this.num=num;
}
public void run()
{
int n= number;
do
{
synchronized(ThreadRevisit.number)
{
if(n>100)
{
number.notifyAll();
break;
}
if (n%3==num)
{
System.out.println(Thread.currentThread().getName()+" "+num);
number=number+1;
}
number.notifyAll();
try
{
number.wait();
}catch(Exception e)
{
}
}
}
while(true);
}
}
class T1
{
public static void main(String[] ar)
{
Integer inn=new Integer(0);
ThreadRevisit.number=inn;
ThreadRevisit t1=new ThreadRevisit("one",inn,0);
ThreadRevisit t2=new ThreadRevisit("two",inn,1);
ThreadRevisit t3=new ThreadRevisit("three",inn,2);
t1.start();
t2.start();
t3.start();
}
27 행
number=number+1;
개체 번호를 값이 증가한 새 번호로 효과적으로 변경합니다. 따라서 새 모니터에는 모니터가 연결되어 있지 않으며 오류가 발생합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다