java线程锁与解锁,Java在不同的线程上锁定和解锁

2023-11-05

我有一个主线程和一个工作线程.主线程将任务添加到队列中,工作线程将其用于计算数据.在将对象放入队列之前,我在任务对象内的ReentrantLock对象(在主线程上)上调用锁.当工作线程完成从队列中的任务处理时,我称为解锁(在工作线程上).问题是我收到一个IllegalMonitorStateException,因为我在不同的线程上调用了锁定和解锁.

我正在寻找可以在不同线程上执行此操作的替代锁定系统.

例:

public class Worker extends Thread {

public static Queue tasks = new ConcurrentLinkedQueue();

@Override

public void run() {

while (true) {

Task task = tasks.poll();

if (task != null) {

task.work();

task.lock.unlock(); // Here is the unlock, Task#i should not change up to now

}

}

}

}

public class Task {

private int i = 0;

public Lock lock;

public void setI(int i) {

lock.lock();

this.i = i;

lock.unlock();

}

public void work() {

System.out.println(i);

}

}

public class Test {

Task task = new Task();

public void addTask() {

task.lock.lock(); // Here is the lock, Task#i should not change

Worker.tasks.add(task);

}

}

解决方法:

为什么不使用只有一个许可证的Semaphore?您无需获取锁定操作,而是获得单个许可证.您应该始终使用release()释放锁.

标签:multithreading,locking,reentrantlock,java

来源: https://codeday.me/bug/20191027/1942068.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java线程锁与解锁,Java在不同的线程上锁定和解锁 的相关文章

  • 数据挖掘七种常用的方法汇总

    数据挖掘 Data Mining 就是从大量的 不完全的 有噪声的 模糊的 随机的实际应用数据中 提取隐含在其中的 人们事先不知道的 但又是潜在有用的信息和知识的过程 这个定义包括几层含义 数据源必须是真实的 大量的 含噪声的 发现的是用户
  • 将本地jar 批量发布到 Nexus 私服

    前言 在日常开发过程中 我们有遇到将项目依赖通过 mvn deploy 发布到自己的公司的私服 以便其他人 环境统一下载入口 但是也有一些特殊情况 比如只能拿到第三方 或甲方 的依赖jar 并拿不到源码 所以只能将jar 通过 mvn de
  • 有限域GF(2^8)内乘法代码实现以及原理

    在密码学中经常用到有限域的乘法 一般在AES中用到的是GF 2 8 有限域内乘法 什么是有限域呢 有限域通俗的讲就是函数的运算结果全都包含在一个域中 不同于实数域 有限域有一个最大值 所有超过这个最大值的数都会经过一定的方法使他回到这个域中
  • 主成份分析(PCA)详解

    主成分分析法 Principal Component Analysis 大多在数据维度比较高的时候 用来减少数据维度 因而加快模型训练速度 另外也有些用途 比如图片压缩 主要是用SVD 也可以用PCA来做 因子分析等 具体怎么用 看个人需求
  • Docker基础(1)—— Docker基本概念

    Docker基础 1 Docker基本概念 Docker基础 2 Docker安装及基础操作 关于docker是什么以及docker的教程网上有很多资料 GitBook上的Docker教程是比较官方和全面的 以下我结合手册的学习及在慕课网上
  • mini2440按键中断

    ARM中断控制系统 按键驱动程序设计 一 Arm中断控制系统 1 查询方式 程序不断地查询设备的状态 并做出相应的反应 该方式实现比较简单 常用在比较单一的系统中 比如 一个温控系统中可以实用查询的方式不断检测温度变化 特点 实现简单 但C
  • 操作系统——LRU算法以及置换次数、缺页数、缺页率计算

    目录 一 LRU是什么 二 LRU算法的规则 三 缺页 换页 四 计算页面置换次数 缺页数 一 LRU是什么 LRU 全称是Least Recently Used 即最近最少使用页面置换算法 从字面意思上可以看出 选择最近最久未使用的页面予
  • python猜硬币正反面_python 编写猜硬币小游戏

    猜硬币解法1 import random guess while guess not in 0 1 print 猜硬币游戏 print 猜一猜硬币是正面还是反面 guess int input 正面 请输入0 反面 请输入1 注意要用int
  • 【STM32】

    失败了也挺可爱 成功了就超帅 文章目录 前言 1 JTAG SWD引脚 2 禁用JTAG功能 2 1 标准库 2 2 HAL库 3 禁用SWD JTAG功能 3 1 标准库 3 2 HAL库 总结 前言 最近在画板子耍 我LED灯选用的 P
  • 当测试人员遇上CodeReview:揭秘代码审查绝招

    引言 测试人员的业务流程理解程度 直接影响测试用例的准确性和全面性 为了提高测试用例编写水平和测试效率 有两个关键方面需要注意 首先 通过仔细阅读需求文档并与产品经理进行充分沟通的方式可以达到这一目标 其次 通过进行代码审查来提高代码质量
  • matlab实现离散傅里叶变换及低通滤波

    如图传感器无滤波状态下FZ数据为下列 导入matlab使用工具箱分析图如下 将数据导入matlab代码 clear clc close all load data nofliter Fs 100 采集频率 T 1 Fs 采集时间间隔 信号长
  • c++对象模型探索-王健伟-专题视频课程

    c 对象模型探索 120人已学习 课程介绍 c 对象模型知识久负盛名 在c 界具有很高的美誉度 这方面知识的学习 更是被诸多颇具开发实力的行业前辈倾力推荐 本门课程内容将涉及到很多不被常人所知的 c 对象内部工作原理 底层的一些具体实现机制
  • 面试 -为啥react函数式组件无this?

    为什么函数式组件的this不指向window 因为这是经过Babel翻译的结果 Babel要将jsx语法翻译成js Babel是严格模式 use strict 下进行的 不允许函数里的this指向window 所以这里指向undefined
  • 飞浆AI studio人工智能课程学习(2)-Prompt优化思路

    文章目录 优化思路 上节课的例子 问题分析 思路解析 Prompt优化技巧 Prompt优化原理 十个技巧高效优化Prompt 迭代法 Trick法 工具法 通用技巧 定基础 通用技巧 做强调 需求强调怎么做 通用技巧 提预设 Trick法
  • 认知迭代:Tomcat性能提升的实战操作,提升60倍以上tomcat性能

    经常听到不少人说一句话 tomcat性能差 不如去用weblogic websphere jboss 我想说 用什么东西得根据实际情况来吧 如果给一个小公司的外包开发一个普通的项目 给她用Oracle Weblogic 在高速公路上 拖拉机
  • QT定制帮助文档

    先给个教程链接 https www cnblogs com Braveliu p 5055387 html
  • Win8下用DOSBox编写汇编语言

    Win8下用DOSBox编写汇编语言 DOSBox 是一个 DOS模拟程序 可以很方便的移植到其他的平台 因此可以使用它在Win8系统中编写汇编语言 下面提供相关下载链接 DOSBox下载 http pan baidu com s 1qWw
  • 简易学生信息管理系统(Python版)

    一 系统简介 实现一个学生信息的管理系统 主要功能有 添加学生信息 删除学生信息 修改学生信息 查询学生信息 显示学生信息 退出当前系统 二 步骤分析 显示功能界面 用户输入功能序号 对不同序号的功能实现具体函数 3 1 定义函数 3 2
  • [Python人工智能] 十八.Keras搭建卷积神经网络及CNN原理详解

    从本专栏开始 作者正式研究Python深度学习 神经网络及人工智能相关知识 前一篇文章详细讲解了Keras实现分类学习 以MNIST数字图片为例进行讲解 本篇文章详细讲解了卷积神经网络CNN原理 并通过Keras编写CNN实现了MNIST分

随机推荐

  • 硬件系统工程师宝典(2)-----硬件电路的概要设计启动

    今天我们继续来读这本书 硬件系统工程师宝典 作者提到 产品需求分析之后就进入概要设计阶段 在这个阶段 ID Industrial Design 工业设计及结构工程师 软件系统开发工程师和硬件系统开发工程师等开始分头工作 工业设计工程师负责使
  • 【会议分享】2022年工业电子与仪器仪表国际会议(ICoIEI 2022)

    2022年工业电子与仪器仪表国际会议 ICoIEI 2022 重要信息 会议网址 www icoiei org 会议时间 2022年10月15 17日 召开地点 韩国济州岛 截稿时间 2022年9月15日 录用通知 投稿后2周内 收录检索
  • python王者归来 pdf下载_OpenStack开源云王者归来

    基本上关于openstack的都买过了 这本最后 前面一些概念内容还是很有帮助的 很好的一本书 非常适合初学者 赞一个 不过原理的东西特少 全都是代码 真是看得蛋疼 OpenStack开源云王者归来介绍 本书按照入门 剖析 扩展的讲授方式
  • 【Python】查看Python & PyTorch & Torchvision版本

    1 查看Python版本 方法一 终端中输入 python V 方法二 进入Python环境 python 输入 import sys print sys version print sys version info 2 查看PyTorch
  • 服务器开启虚拟机就死机,解决ESXi服务器上磁盘锁导致虚拟机卡死的问题

    解决ESXi服务器上磁盘锁导致虚拟机卡死的问题 解决ESXi ESX服务器上磁盘锁导致虚拟机假死 卡死的问题 当虚拟机被卡死或假死时 在文件夹里面只有如下内容信息 1 vswp 2 flat vmdk 3 delta vmdk 4 vmx
  • 人工智能、机器学习、自然语言处理、深度学习等有啥本质的区别?

    大众媒体赋予这些术语的含义通常与机器学习科学家和工程师的理解有所出入 因此 当我们使用这些术语时 给出准确的定义很重要 其关系韦恩图如图1 2所示 图1 2 自然语言处理 人工智能 机器学习和深度学习等术语的关系韦恩图 1 人工智能 人工智
  • LeetCode题目笔记——1807. 替换字符串中的括号内容

    文章目录 题目描述 题目难度 中等 方法一 使用字典 代码 Python 代码 C 总结 题目描述 给你一个字符串 s 它包含一些括号对 每个括号中包含一个 非空 的键 比方说 字符串 name is age yearsold 中 有 两个
  • u盘显示需要格式化才能用怎么办?小技能了解下!

    u盘显示需要格式化才能用怎么办 u盘是常用的一款数据存储设备 但不少网友在使用u盘的过程中 都遇到过这样的一个问题 就是u盘无法打开且提示需要将其格式化 有网友使用u盘的时候操作不当 直接拔插u盘导致u盘损坏需要格式化才能继续使用 但是里面
  • winform 登录跳转页面

    登录成功后跳转 改两个地方就可以解决而 第一个 上面的判断是登录成功与否 跳转需要的就是一句 当前页 改变DialogResult this DialogResult DialogResult OK 第二个 在Program cs里面 st
  • 矩形覆盖(java)

    一 问题描述 我们可以用2 1的小矩形横着或者竖着去覆盖更大的矩形 请问用n个2 1的小矩形无重叠地覆盖一个2 n的大矩形 总共有多少种方法 二 算法分析 解题思路 归纳法 列举出n 1 2 3 4 5 总结规律 分析可知 f n 可以按照
  • java.lang.ClassNotFoundException:(新建的servlet无法找到class文件)

    1 首先确定project gt Build Automatically是否勾选上 2 然后 再进行测试 能不能进行编译 如果还是不能 则进行手动编译 3 进入clean对话框 选择Clean projects selected below
  • 一个按键控制8个led灯_51单片机实现4个按键控制8个LED灯四种状态

    电路原理图 元件清单 程序 C语言 include
  • 爬虫一:用正则表达式爬取图片

    爬虫流程 发起请求 通过使用HTTP库向目标站点发起请求 即发送一个Request 请求可以包含额外的headers等信息 并等待服务器响应 获取响应内容如果服务器能正常响应 则会得到一个Response Response的内容就是所要获取
  • 如何模拟自动鼠标点击或记录鼠标和回放

    在日常办公和娱乐中 我们可能经常想让鼠标自动化的多一点 能自动点击或者循环做一些简单的重复性的程序事务 有没有办法来解决这个小问题呢 你可以使用极速自动鼠标点击器 它是一款鼠标自动点击软件工具 可以极快速的模拟自动鼠标点击或记录鼠标动作 并
  • [深入研究4G/5G/6G专题-27]: 5G NR开机流程4.5 - RRC连接应答消息MSG4、PUCCH上行控制信道首次调度、UCI与HARQ应答

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 目录 前言 第1章 随机接入知识准备 1 1 逻辑信道 传输信道 物理信道的映射关系
  • Office CVE-2017-11882本地复现

    Office CVE 2017 11882本地复现 这两天 office又出名了 CVE 2017 11882成了圈里关注的热点 今年office爆出好几个漏洞 从CVE 2017 0199 CVE 2017 8570到现在的CVE 201
  • Linux服务器Shell批量巡检

    关键词 Linux shell 批量巡检 1 批量巡检流程 通过Linux shell脚本实现批量服务器巡检方案 通常脚本由三部分组成 包括 巡检脚本 实现对性能信息或指标的采集与回传 巡检脚本下发脚本 由主服务器通过Except工具分别根
  • 支持向量机基础

    支持向量机 也叫支持向量网络 可以继续有监督 半监督 无监督学习 有监督学习 线性二分类与回归 非线性二分类与回归 普通连续型变量的回归 概率型连续变量的回归 无监督学习 支持向量机的聚类 SVC 异常值检测 半监督学习 转导支持向量机 支
  • h5监听页面展示隐藏返回

    在开发中遇到了需要监听页面隐藏展示 比如切到后台又切回来 这个时候我立马想到onShow生命周期 不过反应过来这个是微信小程序的 如果想在h5里面监听的话 只需要加一个监听器 document addEventListener visibi
  • java线程锁与解锁,Java在不同的线程上锁定和解锁

    我有一个主线程和一个工作线程 主线程将任务添加到队列中 工作线程将其用于计算数据 在将对象放入队列之前 我在任务对象内的ReentrantLock对象 在主线程上 上调用锁 当工作线程完成从队列中的任务处理时 我称为解锁 在工作线程上 问题