可重入锁:与同步锁(Synchronize)语义行为基本相同,但有更强大的功能获取锁公平设置、测试锁 tryLock 、锁的获取顺序等等。
构造方法:1.ReentrantLock()//创建一个可重入锁2.ReentrantLock(boolean fair)//带公平策略锁,默认为false,是种非公平模式。
常用方法:1.void lock()  请求加锁
2.void unlock()  尝试释放该锁
3.Boolean tryLock()  尝试获得锁,仅在无其他线程持有锁时得到该锁
4.int getHoldCount()  由当前线程持有,锁数。
5.protected Thread getOwner()
6.protected Collection<Thread> getQueuedThreads() 返回试图获得该锁的线程集合
7.Boolean isHeldCurrentThread() 判断锁是否被当前线程持有
8.Boolean isLocked() 查看锁是否被持有。
自己实现:public class Man {volatile static int i=0;private Lock lock;public Man(){lock = new ReentrantLock();}public  void eat(){System.out.println("人吃饭..."+i);}public  void work(){System.out.println("人工作..."+i);}public  void sleep(){System.out.println("人睡觉..."+i);}public void life(){lock.lock();eat();work();sleep();try{}catch (Exception e){}finally {lock.unlock();}}
}-----------------------------------------------------------------public class Reentrant {@Testpublic void Test() {ExecutorService executor = new ThreadPool().getCachedThreadPool();Man man = new Man();for(int i=0;i<4;i++){executor.execute(new Runnable() {@Overridepublic void run() {man.life();Man.i++;}});}executor.shutdown();try {executor.awaitTermination(1,TimeUnit.SECONDS);} catch (InterruptedException e) {e.printStackTrace();}}
}

Java-可重入锁(ReentrantLock)相关推荐

  1. java多线程---重入锁ReentrantLock

    1.定义 重入锁ReentrantLock,支持重入的锁,表示一个线程对资源的重复加锁. 2.底层实现 每个锁关联一个线程持有者和计数器,当计数器为0时表示该锁没有被任何线程持有,那么任何线程都可能获 ...

  2. Java多线程——重入锁ReentrantLock源码阅读

    上一章<AQS源码阅读>讲了AQS框架,这次讲讲它的应用类(注意不是子类实现,待会细讲). ReentrantLock,顾名思义重入锁,但什么是重入,这个锁到底是怎样的,我们来看看类的注解 ...

  3. java中的账户冻结原理_java可重入锁(ReentrantLock)的实现原理

    前言 相信学过java的人都知道 synchronized 这个关键词,也知道它用于控制多线程对并发资源的安全访问,兴许,你还用过Lock相关的功能,但你可能从来没有想过java中的锁底层的机制是怎么 ...

  4. Java 重入锁 ReentrantLock 原理分析

    1.简介 可重入锁ReentrantLock自 JDK 1.5 被引入,功能上与synchronized关键字类似.所谓的可重入是指,线程可对同一把锁进行重复加锁,而不会被阻塞住,这样可避免死锁的产生 ...

  5. 并发编程-19AQS同步组件之重入锁ReentrantLock、 读写锁ReentrantReadWriteLock、Condition

    文章目录 J.U.C脑图 ReentrantLock概述 ReentrantLock 常用方法 synchronized 和 ReentrantLock的比较 ReentrantLock示例 读写锁R ...

  6. Java 可重入锁内存可见性分析

    转载自 深度好文 | Java 可重入锁内存可见性分析 一个习以为常的细节 之前在做 ReentrantLock 相关的试验,试验本身很简单,和本文相关的简化版如下:(提示:以下代码均可左右滑动) p ...

  7. java 可重入锁 clh_Java并发编程系列-(4) 显式锁与AQS

    4 显示锁和AQS 4.1 Lock接口 核心方法 Java在java.util.concurrent.locks包中提供了一系列的显示锁类,其中最基础的就是Lock接口,该接口提供了几个常见的锁相关 ...

  8. java可重入锁与不可重入锁

    所谓重入锁,指的是以线程为单位,当一个线程获取对象锁之后,这个线程可以再次获取本对象上的锁,而其他的线程是不可以的. synchronized 和   ReentrantLock 都是可重入锁. 可重 ...

  9. Java 可重入锁 不可重入锁

    文章目录 Java 可重入锁 & 不可重入锁 概述 论证synchronized是可重入锁: 论证Lock是可重入锁: 自定义不可重入锁: Java 可重入锁 & 不可重入锁 概述 可 ...

  10. 重入锁ReentrantLock详解

    重入锁ReentrantLock,顾名思义,就是支持重进入的锁,它表示该锁能够支持一个线程对资源的重复加锁.除此之外,该锁的还支持获取锁时的公平和非公平性选择. 在AQS实现中,当一个线程调用Mute ...

最新文章

  1. 操作系统修炼秘籍(1):秘籍简介
  2. EOS生产区块:解析插件producer_plugin
  3. 电源功耗压力测试软件,开关电源负载测试经验分享——这篇三分钟小文章着实令人“心动”...
  4. Web框架——Flask系列之宏、继承、包含(十八)
  5. Java中锁的使用和实现
  6. 桌面虚拟化之本地模式(离线模式)大比拼
  7. 常用工具——Rsync
  8. vscode二次开发_vscode 扩展开发从入门到颈椎病康复
  9. uploadify 3.1 /3.2 在Firefox,Chrome 浏览器下,进入页面请求两次问题解决办法。
  10. pdf打印机如何设置双面打印
  11. 比赛竞猜投注类问题概率模型
  12. 数据分析案例-航空公司客户价值分析(聚类)
  13. 网站地图是什么,怎么制作和查看网站的地图呢?
  14. 用aspose转换文档成PDF导致中文变成方框
  15. 在CMD里使用命令实现CMD全屏
  16. 4kw机柜无通道封闭CFD模拟分析及优化(下篇) -孙长青
  17. 避障机器人程序c语言,移动机器人的避障实验设计+源程序+流程图.doc
  18. Js定时器倒计时及堆叠问题解析(附源码)
  19. 移动适配-vw/wh
  20. 逮到一个阿里 10 年老 测试开发,聊过之后收益良多...

热门文章

  1. python中fig_Matplotlib画图中fig,ax,plt的区别和联系
  2. Android Studio 视频教程分享
  3. 你知道机器视觉在物流分拣自动化系统中是如何工作的么?
  4. 电信重组,新机遇还是新危机?
  5. Gated Fully Fusion for Semantic Segmentation(GFF)
  6. 火狐怎么导入旧的火狐数据_Firefox的Sweet Black Theme
  7. 使用share SDK实现新浪微博授权登录分享(1.x版本)
  8. xlnt踩坑记2_自己动手丰衣足食
  9. 冰与火之歌权力的游戏第七季第一集里面的士兵插曲音乐
  10. 电脑一声,电脑主机滴的一声是什么意思 ?