因此,我正在编写一个介绍性的java程序来习惯多线程,但是,我对显示器有点麻烦。特别是,当我进行素数[0] .notifyAll()调用时,下面的代码段抛出IllegalMonitorStateException。如何确保java代码部分有显示器
Integer[] primes=new Integer[3];
if(primes[0]>0{
{
synchronized(primes[0]){
int returning=primes[0];
primes[0]=0;
primes[0].notifyAll();
return returning;}
}
我synchronized关键字的理解是,它保证你有监视器输入代码块之前,所以通过逻辑我应该有一个notifyAll的()调用的监视器。我是否误解了Java用于同步的策略,或者我在实现这个方法时是否存在一些错误?
啊,gotcha。非常感谢。 – Jonathan 2011-04-15 03:35:32