什么是可重入锁(ReentrantLock)?
2024-09-08 02:30:58
举例来说明锁的可重入性
public class UnReentrant{
Lock lock = new Lock();
public void outer(){
lock.lock();
inner();
lock.unlock();
}
public void inner(){
lock.lock();
//do something
lock.unlock();
}
}
outer 中调用了 inner,outer 先锁住了 lock,这样 inner 就不能再获取 lock。其
实调用 outer 的线程已经获取了 lock 锁,但是不能在 inner 中重复利用已经获取
的锁资源,这种锁即称之为 不可重入可重入就意味着:线程可以进入任何一个它
已经拥有的锁所同步着的代码块。
synchronized、ReentrantLock 都是可重入的锁,可重入锁相对来说简化了并发
编程的开发。
最新文章
- Guid算法与标识列(自动增长字段)在表中的应用
- Effective Java 读书笔记之十 序列化
- 在ASP.NET MVC中验证checkbox 必须选中 (Validation of required checkbox in Asp.Net MVC)
- WPF视频教程系列笔记
- select下拉二级联动
- 从零自学Hadoop(25):Impala相关操作下
- NodeJS网络爬虫
- POI读写Excel-操作包含合并单元格操作
- class-map与policy-map 配置与qos模版
- python之内置函数(二)与匿名函数、递归函数初识
- Netty 系列九(支持UDP协议).
- Linux内核剖析(三)构建源码树
- 关于springmvc json交互产生的406错误
- c++之window.h
- 前端开发使用Photoshop切图详细步骤
- linux command ------ source
- MySQL 错误1418
- kafka杂记
- 更改wordpress的默认登录页面名称wp-login
- Mac OS下面安装mysql以及mysql常用命令