当前位置: 首页 > news >正文

【JUC】显示锁

【JUC】显示锁

  • 1. 显式锁

1. 显式锁

与 Java 内置锁(synchronized)不同,JUC 显式锁提供了一种非常灵活的、Java 语言基本的
锁,这种锁的使用非常灵活,可以进行无条件的、可轮询的、定时的、可中断的锁获取和释放操
作。由于 JUC 锁的加锁和解锁的方法都是通过 Java API 显示进行的,所以也叫显式锁。

使用 Java 内置锁时,不需要通过 Java 代码显式地对同步对象的监视器(Monitor)进行抢占
和释放,这些工作由 JVM 底层完成。而且任何一个 Java 对象都能作为一个内置锁使用,所以,
Java 的对象锁使用起来非常方便。但是,Java 内置锁的功能相对单一,不具备一些比较高级的锁
功能,比如:

(1)限时抢锁:在抢锁时设置超时时长,如果超时还未获得锁就放弃,不至于无限等下去。
(2)可中断抢锁:在抢锁时,外部线程给抢锁线程发一个中断信号,就能唤起等待锁的线
程,并终止抢占过程。
(3)多个等待队列:为锁维持多个等待队列,以便提高锁的效率。比如在生产者消费者模式
实现中,生产者和消费者共用一把锁,该锁上维持两个等待队列,一个生产者队列,一个消费者
队列。

除了以上功能问题之外,Java 对象锁还存在性能问题。在竞争稍微激烈的情况下,Java 对象
锁会膨胀为重量级锁(基于操作系统的 Mutex Lock 实现),而重量级锁的线程阻塞和唤醒操作,
需要进程在内核态和用户态之间来回切换,导致其性能非常低。所以,迫切需要提供一种新的锁,
来提升争用激烈场景下锁的性能。

Java 显式锁就是为了解决这些 Java 对象锁的功能问题、性能问题而生。JDK5 版本引入了
Lock 接口,Lock 是 Java 代码级别的锁。为了与 Java 对象锁相区分,Lock 接口叫显式锁接口,其
对象实例叫做显式锁对象。

相关文章:

  • 【计算机常识】--docker入门+docker desktop的使用(一)
  • 【JAVA】的SPI机制
  • 对象模型与LLM融合:人形机器人的智能革命与产业化路径
  • 基于Cookie和Session的模拟登录爬取实战:突破登录认证的高级技术
  • eps转pdf-2025年6月18日星期三
  • 【为什么在触发的事件中修改控件属性需要使用`Invoke`】
  • 轻量化分布式AGI架构:基于区块链构建终端神经元节点的互联网智脑
  • python实战项目75:爬取nature《自然》杂志论文信息
  • tomcat 配置规范
  • 【Python与生活】如何实现一个条形码检测算法?
  • 排序算法专题
  • mac镜像拉取失败,修改镜像源为国内
  • 深入解析协程:高并发编程的轻量级解决方案
  • SQL 盲注(Blind SQL Injection)
  • Mac OS上安装Redis
  • 【windows常见文件后缀】
  • MongoDB学习记录(快速入门)
  • MYSQL进阶超详细总结2.0
  • 2024-2025学年度下期《网页设计》期末模拟测试
  • 【软考高级架构设计师】——2024年下半年软考真题(回忆版)
  • 如何做网站滚动屏幕/google官方下载安装
  • 织梦后台生成网站地图/新闻头条今日要闻军事
  • 证件查询网入口/seo查询百科
  • 武汉光谷做网站哪家好/沈阳网页建站模板
  • 做网站需要备案吗/汕头网站制作设计
  • 网站建设招标流程图/我也要投放广告