可重入锁:与同步锁(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. 深入理解javascript原型和闭包(4)——隐式原型
  2. 如何在Word,Excel和PowerPoint 2010中裁剪图片
  3. python写剧情文字游戏_文字游戏引擎试用心得之一:Ren'py 和 Fungus
  4. java浅度克隆_java对象 深度克隆(不实现Cloneable接口)和浅度克隆
  5. 支付宝首页新增商家服务进度卡片 目前正在灰度测试中
  6. SpringMvc-MockMvc
  7. zw版【转发·台湾nvp系列Delphi例程】HALCON DivImage2
  8. qt自定义QtWidgets
  9. linux 中文字体 推荐,Linux 下何种字体最好看
  10. 如何发送gmail邮件_如何从R和Gmail发送电子邮件
  11. 不要再问芝士和奶酪有什么区别了!一次解释清楚
  12. Mp3(ID3v2)格式文件解析
  13. linux查看dns命令
  14. opencv中waitKey()的作用
  15. c++虚函数实现原理
  16. 华为荣耀总裁刘江峰正式宣告离职
  17. SpringCloud之搭建PiggyMetrics项目
  18. 教你怎么学好Java
  19. html5 载入另一个页面,如何将一个html页面中嵌入另一个html页面
  20. Java web项目目录介绍

热门文章

  1. 人工智能对社会的发展
  2. SOFARegistry + SOFABoot + SOFARPC Demo
  3. 找壁纸不用愁了:壁纸网站/APP/工具合集
  4. 设计模式之java-学习笔记
  5. oracle11g 启动crs,11GR2 CRS启动报错 。。。
  6. 国产化服务器内网安装onlyoffice
  7. 每日蓝桥-基础练习 字母图形
  8. 四叶玫瑰花数java代码_Java 循环语句 四叶玫瑰数,奇数偶数求和
  9. 怎么防止U盘中病毒?中毒后怎么处理?
  10. Google三驾马车:GFS、MapReduce和Bigtable