
jdk源码
文章平均质量分 78
laoxilaoxi_
码农,邮箱laoxilaoxi@foxmail.com
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ReentrantLock学习(二)类整体结构及核心方法时序
一、整体结构 ReentrantLock的核心实际为 AbstractOwnableSynchronizer,简称AQS Lock:锁接口类,定义了锁的一些基本方法 ReentrantLock:其锁的实现依赖于内部sync Sync:ReentrantLock的内部类,继承了AQS,实现了部分模板方法 NonfairSync:ReentrantLock的内部类,继承了Sync,Reen...原创 2019-08-20 23:07:14 · 278 阅读 · 0 评论 -
ReentrantLock学习(一)ReentrantLock的使用
一、例子 一段简单的使用ReentrantLock的例子 public class ReentrantLockMain { static String workContent = null; public static void main(String[] args) throws InterruptedException { //new一个锁 ...原创 2019-08-19 22:56:39 · 617 阅读 · 0 评论 -
流资源关闭try-with-resource
一、直接上代码 try-with-resource的写法,jdk1.7新增的 public static void main(String[] args) { //try-with-resource用法 try (FileOutputStream fileOutputStream = new FileOutputStream(“test.txt")){ ...原创 2019-07-15 14:55:15 · 801 阅读 · 0 评论 -
ReentrantLock学习(三)公平锁与非公平锁
一、概念理解 公平锁:申请所的时候排队,谁也不插队 非公平锁:申请的时候插队(先插队,不行了再排队) 二、差别 ReentrantLock的公平锁与非公平锁的差别在于,内部的同步器不一样,lock()方法调用的是sync的lock(),分别是FairSync与NonfairSync。 sync的lock()内部调用了AQS的acquire,而AQS的acquire做了三件事,第一...原创 2019-08-28 13:43:21 · 393 阅读 · 0 评论 -
ReentrantLock学习(四)lock&unlock过程中sync队列及状态变化
一、AQS中的队列 ReentrantLock锁的实现依赖于AQS,而AQS内部实现锁是依赖于 volatile int state状态 跟volatile Node head,volatile Node tail链表, 模型大致如下 AQS中的队列 status:记录当前锁是否被占用,lock的次数,例如0代表未被占用,2代表lock了2次 exclusiveOwne...原创 2019-08-30 12:10:34 · 429 阅读 · 0 评论 -
ReentrantLock学习(五)Condition中await&signal
一、简介 ReentrantLock 中ConditionObject内部类,实现了Condition接口,内部维护了一个单向链表(firstWaiter、lastWaiter),而Node中的nextWaiter正是用于该单链表 await:释放当前锁持有的锁,生成线程等待node,存储到condition中的单链表中,等被唤醒的时候,在加入到锁的等待队列 signal:唤醒cond...原创 2019-09-10 09:35:49 · 2109 阅读 · 0 评论