决战圣地玛丽乔亚Day29
今日目标(AQS):
AQS(抽象队列同步器):
相当于实现锁的一系列模板方法。
如果要实现锁,需要:
1.锁是否被占用的状态值。
2.阻塞/唤醒
3.竞争失败的队列
AQS中:
state:状态信息,不同的锁的用途不同
Node:阻塞队列等的节点信息(pre,next,thread)都是用volatile进行修饰。thread直接放入队列不好,用节点来代替。
阻塞唤醒:使用LockSupport中的工具类方法
当前持有锁的线程:使用了抽象类AbstractOwnableSynchronizer,进行getset