다른 스레드에서 ReentrantLock을 사용해야합니다. 가능합니까? 오후 8시 30 분 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으로 해결!
알아요. 그러나 그것을 고치는 방법? –
우리가 어떻게하면 좋을지 알지 못하는데 어떻게 추천 할 수 있겠습니까? –
secondMethod가 호출 될 때까지 firstMethod를 일시 중지합니다. –