Java并发基础(12)—— AbstractQueuedSynchronizer

一、背景

之前我们使用synchronized来控制同步,配合Object的wait()、notify()系列方法可以实现等待/通知模式

而在AQS中则提供了条件Condition,对线程的等待、唤醒操作更加详细和灵活

二、Condition

在AQS中,可以维护多个条件队列,和同步队列比较相似,只不过条件队列时单向的

如图所示

当同步队列中拿到锁的节点被移除同步队列后,如果我们调用await方法的话,会根据该节点的线程构造新的节点加入等待队列

当我们调用Signal方法时,会把等待队列的第一个节点移除,加入同步队列去拿锁

整个AQS的框架如下

一个同步队列,若干个条件队列

 

 

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 黑客帝国 设计师:白松林 返回首页