我使用的是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();
}
唤醒的时候也需要加锁。