第一眼看到AbstractQueuedSynchronizer,通常都会有这几个问题。
- AbstractQueuedSynchronizer为什么要搞这么一个类?
- 这个类是干什么的、有什么用?
- 这个类的实现原理是什么?
下面我边学边教,来解答这3个问题。
问题一:AbstractQueuedSynchronizer产生的背景
AbstractQueuedSynchronizer 我这里用简写AQS表示。如果开发者想自己定义一个同步器怎么写?Java程序员用C++写个同步器不现实,这时如果有一个用来写同步器的Java类,就显得很不错。
我也不知道什么场景才需要去重新写同步器?
慢慢往下看。