AQS
AQS
AQS是Java的一个同步器开发框架,解决的一个最核心问题,就是将高端用户人群和真正意义的底层隔离(JVM的机制和底层的JNI)。一种同步器往往不能解决所有问题,用户经常需要自己实现同步器,这个时候,如果没有AQS,用户就会去用底层的JVM或者映射到JNI的API(例如:LockSupport.park、CAS、Unsafe等等),这种情况会让Java编程变得非常复杂。因此Java提供了AQS,让需要实现同步器的用户在一个同步器框架上编程。
比如下面的程序,就可以让用户轻松的实现一个Mutex(互斥锁)数据结构:
1 | public class Mutex { |
具体这个程序的含义,我们会在后面讲AQS部分给大家再讲。现在大家可以看到这段程序我们只需要重写tryAcquire
方法就可以实现一个互斥的同步器。 这是因为真实复杂的逻辑被AbstractQueuedSynchronizer给屏蔽了,它为我们实现了同步。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Alfred的小站!