线程wait后唤醒报错:java.lang.IllegalMonitorStateException的其中一种解决方法

我使用的是ReentrantLock锁,所以会有一个Condition对象,当我使用Condition对象唤醒await()的线程时,报错:java.lang.IllegalMonitorStateException

这个线程里唤醒代码是这么写的:

public void wakeUp(){
		IS_FIGHT.set(false);
		cond.signalAll();
	}

运行到cond.signalAll()时就会报上面的错,需要改成这样:

public void wakeUp(){
		IS_FIGHT.set(false);
		lock.lock();
		cond.signalAll();
		lock.unlock();
	}

唤醒的时候也需要加锁。

猜你喜欢

转载自blog.csdn.net/T262702247/article/details/88713460