while(true)
{
if(num++ == 60)
{
st.changeFlag();
break;
}
System.out.println(Thread.currentThread().getName()+"......."+num);
}
还是这段代码出的问题,当线程t1或t2,开始执行,调用run方法,进入等待,
由于没有加锁,这个时候主线程可能会抢到执行权,开始执行主线程while循环部分,
所以抛出IllegalMonitorStateException,主线程和自定义线程的锁不一样
run方法加了同步之后,t1,t2两个线程执行不会受干扰 |