attempt to unlock lock, not locked by current thread by node id错误

2024-06-03 13:20

本文主要是介绍attempt to unlock lock, not locked by current thread by node id错误,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题

Exception in thread "thread-21" java.lang.IllegalMonitorStateException: attempt to unlock lock, not locked by current thread by node id: 59f44274-17cb-40cd-b83b-08ed1ed3ffc7 thread-id: 73at org.redisson.RedissonBaseLock.lambda$unlockAsync$1(RedissonBaseLock.java:320)at org.redisson.misc.RedissonPromise.lambda$onComplete$0(RedissonPromise.java:187)at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:552)at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616)at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605)at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)at org.redisson.misc.RedissonPromise.trySuccess(RedissonPromise.java:82)at org.redisson.RedissonBaseLock.lambda$evalWriteAsync$0(RedissonBaseLock.java:232)at org.redisson.misc.RedissonPromise.lambda$onComplete$0(RedissonPromise.java:187)at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:552)at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616)at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605)at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)at org.redisson.misc.RedissonPromise.trySuccess(RedissonPromise.java:82)at org.redisson.command.CommandBatchService.lambda$executeAsync$7(CommandBatchService.java:335)at org.redisson.misc.RedissonPromise.lambda$onComplete$0(RedissonPromise.java:187)at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:571)at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:550)at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616)at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605)at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)at org.redisson.misc.RedissonPromise.trySuccess(RedissonPromise.java:82)at org.redisson.command.RedisCommonBatchExecutor.handleResult(RedisCommonBatchExecutor.java:164)at org.redisson.command.RedisExecutor.checkAttemptPromise(RedisExecutor.java:464)at org.redisson.command.RedisExecutor.lambda$execute$3(RedisExecutor.java:172)at org.redisson.misc.RedissonPromise.lambda$onComplete$0(RedissonPromise.java:187)at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:552)at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616)at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605)at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)at org.redisson.misc.RedissonPromise.trySuccess(RedissonPromise.java:82)at org.redisson.client.handler.CommandDecoder.decodeCommandBatch(CommandDecoder.java:318)at org.redisson.client.handler.CommandDecoder.decodeCommand(CommandDecoder.java:210)at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:137)at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:113)at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:507)at io.netty.handler.codec.ReplayingDecoder.callDecode(ReplayingDecoder.java:366)at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719)at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655)at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581)at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986)at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)at java.lang.Thread.run(Thread.java:748)

翻译

java.lang.IllegalMonitorStateException: attempt to unlock lock, not locked by current thread by node id: 59f44274-17cb-40cd-b83b-08ed1ed3ffc7 thread-id: 70

当前线程没有被锁,但是企图去释放锁。

解决办法

判断是否已锁,且锁是否被当前线程持有

  /*** 释放锁* 判断要解锁的key是否已被锁定;判断要解锁的key是否被当前线程持有*/if (lock.isLocked() && lock.isHeldByCurrentThread()) {log.info("线程:" + Thread.currentThread().getName() + "准备释放锁");lock.unlock();}

加锁解锁参考代码
参考代码

@ResourceRedissonClient redissonClient;private int ticket = 100;private final static String LOCK_KEY = "TICKET_KEY";@Overridepublic void hello(String name) {//定义锁RLock lock = redissonClient.getLock(LOCK_KEY);try {//尝试加锁,最大等待时间2秒(如果还没等到锁,则失败),最大持锁时间10秒(防止意外情况无法释放)if (lock.tryLock(2000, 10000, TimeUnit.MILLISECONDS)) {int t = new Random().nextInt(4000);log.info("线程:" + Thread.currentThread().getName() + "获得了锁,占锁时间:" + t + " 毫秒");Thread.sleep(t);log.info("剩余数量:{}", --ticket);} else {log.info("线程:" + Thread.currentThread().getName() + "未获取到锁");}} catch (Exception e) {log.error("程序执行异常:{}", e);} finally {/*** 释放锁* 判断要解锁的key是否已被锁定;判断要解锁的key是否被当前线程持有*/if (lock.isLocked() && lock.isHeldByCurrentThread()) {log.info("线程:" + Thread.currentThread().getName() + "准备释放锁");lock.unlock();}}}

这篇关于attempt to unlock lock, not locked by current thread by node id错误的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1027104

相关文章

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

Thread如何划分为Warp?

1 .Thread如何划分为Warp? https://jielahou.com/code/cuda/thread-to-warp.html  Thread Index和Thread ID之间有什么关系呢?(线程架构参考这里:CUDA C++ Programming Guide (nvidia.com)open in new window) 1维的Thread Index,其Thread

Node Linux相关安装

下载经编译好的文件cd /optwget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.gztar -xvf node-v10.15.3-linux-x64.tar.gzln -s /opt/node-v10.15.3-linux-x64/bin/npm /usr/local/bin/ln -s /opt/nod

【经验交流】修复系统事件查看器启动不能时出现的4201错误

方法1,取得『%SystemRoot%\LogFiles』文件夹和『%SystemRoot%\System32\wbem』文件夹的权限(包括这两个文件夹的所有子文件夹的权限),简单点说,就是使你当前的帐户拥有这两个文件夹以及它们的子文件夹的绝对控制权限。这是最简单的方法,不少老外说,这样一弄,倒是解决了问题。不过对我的系统,没用; 方法2,以不带网络的安全模式启动,运行命令行,输入“ne

SQL2005 性能监视器计数器错误解决方法

【系统环境】 windows 2003 +sql2005 【问题状况】 用户在不正当删除SQL2005后会造成SQL2005 性能监视器计数器错误,如下图 【解决办法】 1、在 “开始” --> “运行”中输入 regedit,开启注册表编辑器,定位到 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVer

Vue3上传图片报错:Current request is not a multipart request

当你看到错误 "Current request is not a multipart request" 时,这通常意味着你的服务器或后端代码期望接收一个 multipart/form-data 类型的请求,但实际上并没有收到这样的请求。在使用 <el-upload> 组件时,如果你已经设置了 http-request 属性来自定义上传行为,并且遇到了这个错误,可能是因为你在发送请求时没有正确地设置

ssm 之事务管理出现错误

JDBC Connection will not be managed by Spring 项目采用的是分布式架构,分别有controller,service,solr三个服务器,之间通过dubbo进行调用,经过测试发现事务配置完以后不能通过spring进行管理,其中两条insert和一条update语句都执行完毕,异常并没有使得事务进行回滚,通过调取debug日志发现“JDBC Conn

4-4.Andorid Camera 之简化编码模板(获取摄像头 ID、选择最优预览尺寸)

一、Camera 简化思路 在 Camera 的开发中,其实我们通常只关注打开相机、图像预览和关闭相机,其他的步骤我们不应该花费太多的精力 为此,应该提供一个工具类,它有处理相机的一些基本工具方法,包括获取摄像头 ID、选择最优预览尺寸以及打印相机参数信息 二、Camera 工具类 CameraIdResult.java public class CameraIdResult {

Unstructured cannot write mode RGBA as JPEG 错误解决

Unstructured cannot write mode RGBA as JPEG 错误解决 0. 错误详细1. 解决方法 0. 错误详细 Image Extraction Error: Skipping the failed imageTraceback (most recent call last):File "/root/miniconda3/envs/learn-y

收藏:解决 pip install 出现 error: subprocess-exited-with-error 错误的方法

在使用 pip 安装 Python 包时,有时候会遇到 error: subprocess-exited-with-error 错误。这种错误通常是由于 setuptools 版本问题引起的。本文将介绍如何解决这一问题 当你使用 pip install 安装某个 Python 包时,如果 setuptools 版本过高或过低,可能会导致安装过程出错,并出现类似以下错误信息:error: subpr