14.条件队列和AQS

目录

1状态依赖性的管理(引入条件队列)

1.1示例:将前提条件的失败传递给调用者

1.2示例:通过轮询与休眠来实现简单的阻塞

1.3条件队列(wait、notify)

2使用条件队列

2.1条件谓词

2.2过早唤醒

2.3丢失的信号

2.4通知​

2.5示例:阀门类

3显式的Condition对象

4Synchronizer剖析

5AbstractQueuedSynchronizer

6同步工具中的AQS

6.1ReentrantLock

6.2Semaphore与CountDownLatch

6.3FutureTask

6.4ReentrantReadWriteLock

总结


1状态依赖性的管理(引入条件队列)

通过轮询与休眠方式勉强解决:

14.条件队列和AQS

14.条件队列和AQS

1.1示例:将前提条件的失败传递给调用者

14.条件队列和AQS

14.条件队列和AQS

14.条件队列和AQS

14.条件队列和AQS

1.2示例:通过轮询与休眠来实现简单的阻塞

14.条件队列和AQS

14.条件队列和AQS

14.条件队列和AQS

1.3条件队列(wait、notify)

14.条件队列和AQS

14.条件队列和AQS

14.条件队列和AQS

14.条件队列和AQS

14.条件队列和AQS

 

2使用条件队列

2.1条件谓词

14.条件队列和AQS

14.条件队列和AQS

14.条件队列和AQS

2.2过早唤醒

14.条件队列和AQS

关键点:wait会释放锁,所以在重新获得锁后需要再次检验条件

14.条件队列和AQS

2.3丢失的信号

线程在等待前没有先检查条件谓词

2.4通知
14.条件队列和AQS

14.条件队列和AQS

条件通知:

14.条件队列和AQS

2.5示例:阀门类

14.条件队列和AQS

代码有误

14.条件队列和AQS

第二节其他部分未理解待补充

 

3显式的Condition对象

14.条件队列和AQS

14.条件队列和AQS

14.条件队列和AQS

 

4Synchronizer剖析

14.条件队列和AQS

14.条件队列和AQS

14.条件队列和AQS

 

5AbstractQueuedSynchronizer

14.条件队列和AQS

14.条件队列和AQS

14.条件队列和AQS

14.条件队列和AQS

14.条件队列和AQS

14.条件队列和AQS

 

6同步工具中的AQS

14.条件队列和AQS

6.1ReentrantLock

14.条件队列和AQS

14.条件队列和AQS

6.2Semaphore与CountDownLatch

14.条件队列和AQS

14.条件队列和AQS

6.3FutureTask

14.条件队列和AQS

6.4ReentrantReadWriteLock

14.条件队列和AQS

 

总结

14.条件队列和AQS