心理

当前位置 /首页/完美生活/心理/列表

condition原理

condition原理

Condition持有多个FIFO的等待队列,当前线程调用await方法时,那么这当前线程就会释放锁,进入这个等待队列的尾部进入等待状态。

Condition拥有这个队列的首节点(firstWaiter)和尾节点(lastWaiter).其实一个Lock(同步器)有一个同步队列(准备去获得锁)以及多个等待队列(本来已经有锁,但是中途用了await方法),还记得之前讨论的监视器么,和这个很像,监视器只有一个同步队列和一个等待队列。

其实工作原理一样的,没有获取锁的线程在同步队列等待锁,获得锁后进入特殊的房间(资源),调用await之类的等待方法就把同步队列的头结点移到等待队列的尾节点。当等待队列里面的节点被唤醒后,进入同步队列拿锁进入同步状态。

TAG标签:condition #