【发布时间】:2016-11-14 10:15:01
【问题描述】:
我需要在不同的线程中使用 ReentrantLock。有可能吗? 附言在 secondMethod "lock.unlock()" 中抛出 IllegalMonitorStateException。
public class SomeClass {
private static ConcurrentHashMap<String, String> hashMap = new ConcurrentHashMap<>();
private final Lock lock = new ReentrantLock();
public void firstMethod(Action action) {
new Thread(new Runnable() {
@Override
public void run() {
//SOME CODE BEFORE LOCK
lock.lock();
//SOME CODE AFTER UNLOCK
}
}).start();
}
public void secondMethod(Action action) {
if (hashMap.get("key").length() == 3)
lock.unlock();
}
}
编辑:用 java.util.concurrent.locks.Condition 解决!
【问题讨论】:
标签: java multithreading concurrency java.util.concurrent illegalmonitorstateexcep