自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 JUC源码阅读之CyclicBarrier-AQS的典型实现(五)

1、类注释摘抄对于失败的同步尝试,CyclicBarrier 使用了一种要么全部要么全不 (all-or-none) 的破坏模式:如果因为中断、失败或者超时等原因,导致线程过早地离开了屏障点,那么在该屏障点等待的其他所有线程也将通过 BrokenBarrierException(如果它们几乎同时被中断,则用 InterruptedException)以反常的方式离开。2、源码中的主要方

2018-01-15 23:33:03 287

原创 JUC源码阅读之Semaphore-AQS共享模式的典型实现(四)

1.Semaphore类注释摘抄将信号量初始化为 1,使得它在使用时最多只有一个可用的许可,从而可用作一个相互排斥的锁。这通常也称为二进制信号量,因为它只能有两种状态:一个可用的许可,或零个可用的许可。按此方式使用时,二进制信号量具有某种属性(与很多 Lock 实现不同),即可以由线程(其他线程)释放“锁”,而不是由所有者(因为信号量没有所有权的概念)。在某些专门的上下文(如死锁恢复)中这会很

2018-01-15 22:47:28 133

原创 JUC源码阅读之ReentrantReadWriteLock-AQS的典型实现(三)

ReentrantReadWriteLock即实现了AQS的独占模式(写锁),又实现了共享模式(读锁)1.源码中关于这个类的说明的摘录。它是利用ReentrantLock实现了ReadWriteLock接口。虽然他不会给所有的读锁和写锁的获取者一个顺序,但是它支持可选的公平策略。默认的非公平策略:一个非公平锁可能会一直推迟读或者写的线程,但是他有比公平锁更高的吞吐量。公平策略:释放

2018-01-12 21:36:51 216

原创 JUC源码阅读之CountDownLatch-AQS共享模式的典型实现

CountDownLatch是一个同步辅助类,在一组其他线程完成操作之前,它允许一个或多个线程等待。1.Sync内部类这个内部类继承了AQS,实现了AQS的共享模式下的几个模板方法 private static final class Sync extends AbstractQueuedSynchronizer { private static final lo

2018-01-11 23:35:36 177

原创 JUC源码阅读之ReentrantLock-AQS独占模式的典型实现

ReentrantLock是一个可以重入的互斥(独占)锁,支持公平锁和不公平锁(默认)。他的内部实现主要是有一个Sync内部类,具体情况我们注意阅读源码进行分析。1.SyncSync是一个实现了AQS的内部类,他还有FairSync和NonFairSync两种实现。Sync是这个锁的基础,使用了AQS中的state来表示当前拥有的锁的数量(因为是重入锁,可能被多次lock)。  

2018-01-11 22:27:46 318

原创 JUC源码阅读之AbstractQueueSynchronizer(三)

1.内部的一些支持Conditions的方法如果node原来在condition队列中,现在已经被移动到同步队列中,就返回true //如果node原来是在条件队列中,现在移动到同步队列中,就返回true final boolean isOnSyncQueue(Node node) { //ws为CONDITION,证明还在Codition队列中 if (nod

2018-01-11 18:53:11 202

原创 JUC源码阅读之AbstractQueueSynchronizer(二)

1. node节点node用于组成一个等待队列,每个node在其前驱节点被release后被通知。队列中的第一个线程会尝试去获取锁,但是第一不一定代表能获取成功。ConditonObject也使用了同样node,但是他们单独使用了一条链接。在await操作后,一个节点被加入到condition队列。在signal操作之后,这个节点会被移动到正常的AQS队列。 static fina

2018-01-09 23:25:26 236

原创 JUC源码阅读之AbstractQueueSynchronizer(一)

AQS(AbstractQueuedSynchronizer)是java.util.concurrent包中的一个基础类,很多并发的工具类都是利用他进行的开发,比如ReetrantLock、Semphore、线程池等等。所以在这里我把AQS的源码进行了整理和阅读,这只是理解整个juc包的一个基础,要想掌握AQS,还需要通过和他的实现类相结合来理解,这篇文章算是本人学习jdk并发源码的第一篇学习笔记

2018-01-09 00:42:19 305

libxml2-2.6.26 代码

libxml2为程序提供函数去解析XML格式的文件。 代码纯C实现。

2013-10-28

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除