赞
踩
资料
http://blog.csdn.net/wangyangzhizhou/article/details/42048453
http://moon-walker.iteye.com/blog/2406446
自旋锁&CLH锁
Craig, Landin, and Hagersten的CLH锁
而在AQS中有一个内部类ConditionObject实现了Condition接口。所谓条件队列,其实是一个单向链表;在讲解AQS的实现原理时只讲解了AQS队列,AQS队列前面讲过是双向链表结构。也就是说在AQS整体实现中维护了两个链表:一个是“同步队列”双向链表(这里简称AQS队列),另一个是“条件队列”单向链表。
Node数据结构
static final class Node {
volatile int waitStatus;//节点状态
volatile Node prev;//前指针 指向前一个节点
volatile Node next;//后指针指向后一个节点
volatile Thread thread;//线程实例
Node nextWaiter;//下一个等待节点
//共享类型
static final Node SHARED = new Node();
//独占类型
static final Node EXCLUSIVE = null;
/**状态列表,对应waitStatus字段值*/
//线程取消类型
static final int CANCELLED = 1;
//线程唤醒状态类型 对应condition的 signal、signalAll方法
static final int SIGNAL = -1;
//线程阻塞状态类型,对应condition的await方法
static final int CONDITION = -2;
//对应共享类型释放资源时,传播唤醒线程状态
static
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。