簡體   English   中英

java.lang.IllegalMonitorStateException: 當前線程不是鎖的所有者

[英]java.lang.IllegalMonitorStateException: Current thread is not owner of the lock

我將hazelcast 從2.4 升級到3.3,但是發生了這個異常。

13:12:51,269 [Thread-21]: ERROR xx.xx.xxThread:1783 - run:
java.lang.IllegalMonitorStateException: Current thread is not owner of the lock! -> <not-locked>
    at com.hazelcast.concurrent.lock.operations.UnlockOperation.ensureUnlocked(UnlockOperation.java:71)
    at com.hazelcast.concurrent.lock.operations.UnlockOperation.unlock(UnlockOperation.java:65)
    at com.hazelcast.concurrent.lock.operations.UnlockOperation.run(UnlockOperation.java:57)
    at com.hazelcast.spi.impl.BasicOperationService$OperationHandler.handle(BasicOperationService.java:699)
    at com.hazelcast.spi.impl.BasicOperationService$OperationHandler.access$400(BasicOperationService.java:675)
    at com.hazelcast.spi.impl.BasicOperationService$OperationPacketHandler.handle(BasicOperationService.java:649)
    at com.hazelcast.spi.impl.BasicOperationService$OperationPacketHandler.handle(BasicOperationService.java:604)
    at com.hazelcast.spi.impl.BasicOperationService$OperationPacketHandler.access$1400(BasicOperationService.java:591)
    at com.hazelcast.spi.impl.BasicOperationService$BasicDispatcherImpl.dispatch(BasicOperationService.java:543)
    at com.hazelcast.spi.impl.BasicOperationScheduler$OperationThread.process(BasicOperationScheduler.java:439)
    at com.hazelcast.spi.impl.BasicOperationScheduler$OperationThread.doRun(BasicOperationScheduler.java:433)
    at com.hazelcast.spi.impl.BasicOperationScheduler$OperationThread.run(BasicOperationScheduler.java:408)
    at ------ End remote and begin local stack-trace ------.(Unknown Source)
    at com.hazelcast.spi.impl.BasicInvocationFuture.resolveApplicationResponse(BasicInvocationFuture.java:356)
    at com.hazelcast.spi.impl.BasicInvocationFuture.resolveApplicationResponseOrThrowException(BasicInvocationFuture.java:289)
    at com.hazelcast.spi.impl.BasicInvocationFuture.get(BasicInvocationFuture.java:181)
    at com.hazelcast.spi.impl.BasicInvocationFuture.get(BasicInvocationFuture.java:160)
    at com.hazelcast.spi.impl.BasicInvocationFuture.getSafely(BasicInvocationFuture.java:172)
    at com.hazelcast.concurrent.lock.LockProxySupport.unlock(LockProxySupport.java:126)
    at com.hazelcast.concurrent.lock.LockProxy.unlock(LockProxy.java:99)
    at activesync.server.CheckLoginsThread.run(CheckLoginsThread.java:1552)

3.3中getLock的變化是新版本需要String作為參數。 我只是將它從 Object 更改為 String,沒有其他任何更改。 代碼如下:

Map logins = MyHazelcast.getMap("logins");
Lock lock = MyHazelcast.getLock("logins");
lock.lock();
try
{
     // do something...
}
finally
{
    lock.unlock();
}  

這是由新版本引起的還是我錯過了什么?

> Current thread is not owner of the lock! -> <not-locked>

“未鎖定”表示未找到具有給定密鑰的鎖。 是否有可能在另一個地方使用帶有“登錄”鍵的鎖?

也許您在代碼中的某處釋放了鎖?

我將從這個鎖的唯一鍵名開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM