我需要在不同的線程中使用ReentrantLock。這有可能嗎? P.S.在secondMethod「lock.unlock()」中引發IllegalMonitorStateException。不同線程中的併發(ReentrantLock)
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解決!
我知道。但如何解決它? –
不知道你想達到什麼邏輯我們如何推薦:) –
暫停執行firstMethod直到secondMethod被調用 –