简体   繁体   English

java.lang.IllegalMonitorStateException: 当前线程不是锁的所有者

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

I upgraded my hazelcast from 2.4 to 3.3, but this exception occurred.我将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)

The change for getLock in 3.3 is that the String is required as the parameter in new version. 3.3中getLock的变化是新版本需要String作为参数。 I just changed it from Object to String, nothing else is changed.我只是将它从 Object 更改为 String,没有其他任何更改。 The code is as below:代码如下:

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

Is this caused by the new version or I missed something?这是由新版本引起的还是我错过了什么?

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

"not locked" means that lock with given key wasn't found. “未锁定”表示未找到具有给定密钥的锁。 Is it possible that lock with key "logins" is used in another place?是否有可能在另一个地方使用带有“登录”键的锁?

Maybe you release the lock somewhere inside your code?也许您在代码中的某处释放了锁?

I would start with unique key name for this lock.我将从这个锁的唯一键名开始。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 线程“main”java.lang.IllegalMonitorStateException中的异常 - Exception in thread “main” java.lang.IllegalMonitorStateException Java 8 重入锁和条件导致 IllegalMonitorStateException:当前线程不是所有者 - Java 8 Reentrant Lock and Condition results in IllegalMonitorStateException: current thread is not owner 超时时发生java.lang.IllegalMonitorStateException - java.lang.IllegalMonitorStateException on timeout Android:java.lang.IllegalMonitorStateException:对象在wait()之前未被线程锁定 - Android: java.lang.IllegalMonitorStateException: object not locked by thread before wait() java.lang.IllegalMonitorStateException:对象在wait()之前未被线程锁定 - java.lang.IllegalMonitorStateException: object not locked by thread before wait() Android java.lang.IllegalMonitorStateException:对象在wait()之前未被线程锁定 - Android java.lang.IllegalMonitorStateException: object not locked by thread before wait() java.lang.IllegalMonitorStateException:在等待()之前对象没有被线程锁定? - java.lang.IllegalMonitorStateException: object not locked by thread before wait()? 线程通信:如何发出信号,表明已单击某个键? java.lang.IllegalMonitorStateException - Thread communication: How to signal that a key was clicked? java.lang.IllegalMonitorStateException java.lang.IllegalMonitorStateException (java selenium) - java.lang.IllegalMonitorStateException (java selenium) 通知异常 java.lang.IllegalMonitorStateException Locks - Notify exception java.lang.IllegalMonitorStateException Locks
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM