synchronized和ReentrantLock可重入锁验证的操作方法
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,今天就跟大家聊聊有关synchronized和ReentrantLock可重入锁验证的操作方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一
千家信息网最后更新 2025年02月02日synchronized和ReentrantLock可重入锁验证的操作方法
今天就跟大家聊聊有关synchronized和ReentrantLock可重入锁验证的操作方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
一个线程已经获得了一把锁,则可以再多次重复获得这把已经获取的锁而不会发生死锁(可类比生活大门锁示例)。
前言
可重入锁又名递归锁,是指在同一个线程在外层方法获取锁的时候,再进入该线程的内层方法会自动获取锁(前提,锁对象得是同一个对象),不会因为之前已经获取过还没释放而阻塞。Java中ReentrantLock和synchronized都是可重入锁,可重入锁的一个优点是可一定程度避免死锁。
一、synchronized可重入验证
package com.lau.javabase.lock;/** * 隐式锁 */public class ReenterSynchronizedTest { public synchronized void print(){ System.out.println("外层调用..."); //中层调用 print2(); //内层调用 print3(); } public synchronized void print2(){ System.out.println("中层调用..."); } public synchronized void print3(){ System.out.println("内层调用..."); } public static void main(String[] args) { ReenterSynchronizedTest test = new ReenterSynchronizedTest();// test.print(); test.print4(); } /** * 同一个线程可以多次获得同一把锁 */ public void print4(){ synchronized (this){ System.out.println("外层调用呀..."); synchronized (this){ System.out.println("中层调用呀..."); synchronized (this){ System.out.println("内层调用呀..."); } } } }}
输出:
外层调用呀...中层调用呀...内层调用呀...
二、ReenTrantLock可重入性验证
package com.lau.javabase.lock;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 显示锁 */public class ReenterLockTest { public static void main(String[] args) { ReenterLockTest test = new ReenterLockTest(); test.print(); new Thread(() -> test.print2(),"t").start(); } private Lock lock = new ReentrantLock(); /** * 同一个线程可以多次获得同一把锁 */ public void print(){ try{ lock.lock(); lock.lock(); System.out.println("外层调用"); try{ lock.lock(); System.out.println("中层调用"); try{ lock.lock(); System.out.println("内层调用"); } finally { lock.unlock(); } } finally { lock.unlock(); } } finally { lock.unlock();// lock.unlock(); } } public void print2(){ try{ lock.lock(); System.out.println("come on!"); } finally { lock.unlock(); } }}
输出:
外层调用中层调用内层调用
看完上述内容,你们对synchronized和ReentrantLock可重入锁验证的操作方法有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
内层
中层
外层
线程
方法
验证
内容
对象
死锁
输出
优点
前提
前言
又名
得了
时候
更多
知识
示例
程度
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发包含技术服务吗
u8远程服务器管理员
南京漫居互联网科技有限公司
软件工程跟计算机网络技术区别
软件开发为什么会转业
我的世界可以氪金的服务器推荐
数据库课程设计工资管理
倪匡小说软件开发
方舟手游好玩的纯生存服务器
数据库的计算公式
音乐欣赏课件软件开发
服务器更新网页数据的方法
端游网易我的世界有啥好玩服务器
津南区数据网络技术答疑解惑
网络安全观后感部队
生存战争服务器全集
红桥区信息网络技术售后服务
怎么购买数据库
中医教学数据库
数据库sql语句嵌套判断
数据库中 不等于符号
软件开发成本与营销
医院网络安全的观点
天龙八部服务器爆满
网站本地服务器
网络安全妈妈通行
上海互联网科技公司关系图谱
2017年软件开发总结
沈阳软件开发人员离职率
曙光 的ARM服务器