概括:AQS是一个对线程阻塞,排队,唤醒的一个抽象框架。大多数线程协作工具类都是用它作为内部类,然后对它进行运用,实现线程间的协作。
ReentrenLock举例:
组成部分:state,队列,工具类去实现的获取和释放逻辑
state:0表示未被占有,占有,重入则加1,释放则减1
队列:线程对state的cas占有操作失败则入队,等待执行中的线程唤醒(通过上述的获取和释放逻辑判断)。
概括:AQS是一个对线程阻塞,排队,唤醒的一个抽象框架。大多数线程协作工具类都是用它作为内部类,然后对它进行运用,实现线程间的协作。
ReentrenLock举例:
组成部分:state,队列,工具类去实现的获取和释放逻辑
state:0表示未被占有,占有,重入则加1,释放则减1
队列:线程对state的cas占有操作失败则入队,等待执行中的线程唤醒(通过上述的获取和释放逻辑判断)。