異なるスレッドでReentrantLockを使用する必要があります。それは可能ですか? P.P. 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で解決!
私は知っています。しかし、それを修正する方法は? –
どのようなロジックを達成したいのか分からずに、どうすればよいでしょうか? –
secondMethodが呼び出されるまでfirstMethodの実行を一時停止します –