举例来说明锁的可重入性

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 都是可重入的锁,可重入锁相对来说简化了并发

编程的开发。

最新文章

  1. Guid算法与标识列(自动增长字段)在表中的应用
  2. Effective Java 读书笔记之十 序列化
  3. 在ASP.NET MVC中验证checkbox 必须选中 (Validation of required checkbox in Asp.Net MVC)
  4. WPF视频教程系列笔记
  5. select下拉二级联动
  6. 从零自学Hadoop(25):Impala相关操作下
  7. NodeJS网络爬虫
  8. POI读写Excel-操作包含合并单元格操作
  9. class-map与policy-map 配置与qos模版
  10. python之内置函数(二)与匿名函数、递归函数初识
  11. Netty 系列九(支持UDP协议).
  12. Linux内核剖析(三)构建源码树
  13. 关于springmvc json交互产生的406错误
  14. c++之window.h
  15. 前端开发使用Photoshop切图详细步骤
  16. linux command ------ source
  17. MySQL 错误1418
  18. kafka杂记
  19. 更改wordpress的默认登录页面名称wp-login
  20. Mac OS下面安装mysql以及mysql常用命令

热门文章

  1. 思迈特软件Smartbi光鲜亮丽的背后是什么在支撑?
  2. Thread、ThreadPool 和 Task
  3. C#中的泛型 / 泛型类 / 数组、ArrayList和List三者的区别
  4. Scala学习笔记(详细)
  5. 微信小程序里实现跑马灯效果
  6. .NET Core WebApi使用Swagger
  7. 二、python数据类型详解
  8. LeetCode-054-螺旋矩阵
  9. Linux CentOS 7.X-关机、重启命令
  10. 七牛云cdn加速