aqs独占模式
2018-08-28 14:15:53 2 举报
java aqs独占模式
作者其他创作
大纲/内容
waitStatus 0 - -1thread:thread1nextWaiter null
482
waitStatus -1thread:nullnextWaiter null
独占锁ReentrantLock
当锁已经被一个线程占用,另外一个thread1.lock(),此时head和tail都是null,等待队列为空。获取失败后将加入等待队列
另外一个thread2.lock()482的waitStatus 0 - -1
开始
未获取到锁
482(tail)
483(head)
waitStatus 0thread:thread1nextWaiter null
有新节点加入队列会重置pre节点的waitStatus 0 - -1说明有需要唤醒的节点; 释放所锁的时候会把头节点的waitStatus -1 - 0说明头节点正在唤醒线程,同时被唤醒的线程会继续执行代码,会重置当前head节点。独占模式只会唤醒一个节点。
494
waitStatus 0thread:thread2nextWaiter null
0 条评论
回复 删除
下一页