我想打印或者使用三个线程。 第一线应打印一个号码,然后第二个线程的第二个数字,然后第三thread.I尝试使用共享静态整数来实现它,但我的代码表明IllegalMonitorStateException.Can请人检查并告诉我的错误?为什么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();
}