synchronized和ReentrantLock可重入锁验证的操作方法
发表于:2024-10-21 作者:千家信息网编辑
千家信息网最后更新 2024年10月21日,今天就跟大家聊聊有关synchronized和ReentrantLock可重入锁验证的操作方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一
千家信息网最后更新 2024年10月21日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安全错误
数据库的锁怎样保障安全
西安铁成网络技术
dbf文件型地理数据库
网络技术有什么实用性
河北网络安全大赛答案
数据库应该考虑哪些安全性
软件开发公司如何做账
北京开放大学软件开发
网络安全五要五不要内容
甘肃网络安全检测
服务器安全检测器
2017网络安全厂商排行
用c 做桌面小软件开发
数据库参照完整性是灰色的
淄川进销存库存软件开发公司
电脑无法连接到代理服务器
网络安全教学课件ppt
安卓上传数据到服务器
wapi网络安全协议
简阳市网络安全
软件开发视屏
udl数据库如何打开
请求响应返回500服务器错误
网络技术宏观环境分析
服务器电脑属于什么辐射
行云数据库添加字段
C 链接数据库讲解
春节活动服务器
cfd以软件开发工具
对于网络安全技术的感想
长宁区网络视频系统服务器