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

JAVA中有关锁的详解

 Java锁使用

在Lock接口出现之前,Java程序是靠synchronized关键字实现锁功能的,而JavaSE 5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁功能,它提供了与synchronized关键字类似的同步功能,只是在使用时需要显式地获取和释放锁。虽然它缺少了(通过synchronized块或者方法)隐式获取释放锁的便捷性,但是却拥有了锁获取与释放的可操作性、可中断的获取锁以及超时获取锁等多种synchronized关键字所不具备的同步特性。

Lock 锁的基本用法, l.lock()方法进行上锁, l.unlock()方法进行解锁,如下所示。 

Lock lock = new ReentrantLock();  
lock.lock();  
try {  // ..
} finally {lock.unlock();
}

 Lock相较于Synchronized优势如下:

  • 可中断获取锁:使用synchronized关键字获取锁的时候,如果线程没有获取到被阻塞了,那么这个时候该线程是不响应中断(interrupt)的,而使用Lock.lockInterruptibly()

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Stable Diffusion 使用详解(10)--- 场景立体字
  • Docker php文件本地包含--pearcmd.php利用
  • 【vSphere 7/8】深入浅出 vSphere 证书 Ⅲ—— vSphere 证书的更新和替换概述
  • 泛微E9开发 获取浏览按钮的显示值
  • C++编程:理解左值(lvalue)和右值(rvalue)
  • Datawhale X 李宏毅苹果书 AI夏令营 Task 2
  • Keil5 Debug模式Watch窗口添加的监控变量被自动清除
  • Linux常见基础命令
  • c#笔记5 详解事件的内置类型EventHandler、windows事件在winform中的运用
  • 拼多多Temu半托管和全托管对比
  • 【机器学习】决策树------迅速了解其基本思想,Sklearn的决策树API及构建决策树的步骤!!!
  • 基于深度学习的金属锈蚀检测系统详细实施指南
  • HTML+CSS面试题总结:(第一天)
  • 【openwrt-21.02】T750 openwrt-21.02 pptp拨号失败问题分析及解决方案
  • 应对Java虚拟机(JVM)负载突然增大的全面指南
  • @jsonView过滤属性
  • 《Java编程思想》读书笔记-对象导论
  • Android系统模拟器绘制实现概述
  • Babel配置的不完全指南
  • Laravel核心解读--Facades
  • maya建模与骨骼动画快速实现人工鱼
  • Twitter赢在开放,三年创造奇迹
  • unity如何实现一个固定宽度的orthagraphic相机
  • 笨办法学C 练习34:动态数组
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 理解在java “”i=i++;”所发生的事情
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 微信小程序:实现悬浮返回和分享按钮
  • Java性能优化之JVM GC(垃圾回收机制)
  • k8s使用glusterfs实现动态持久化存储
  • 仓管云——企业云erp功能有哪些?
  • #include到底该写在哪
  • #Ubuntu(修改root信息)
  • #每天一道面试题# 什么是MySQL的回表查询
  • (2015)JS ES6 必知的十个 特性
  • (33)STM32——485实验笔记
  • (C++哈希表01)
  • (二)Kafka离线安装 - Zookeeper下载及安装
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (三)c52学习之旅-点亮LED灯
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)linux 命令大全
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .Net core 6.0 升8.0
  • .NET MAUI Sqlite数据库操作(二)异步初始化方法
  • .NET Micro Framework 4.2 beta 源码探析
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)