锁
一、同步队列
1、线程加入队列因为CAS的使用变成串行的。
1、队列的线程因为中断或者因为出队第二个线程被唤醒。醒来的线程继续tryAcquire判断是否获得锁,如果获得则表示获得锁,否则可能继续wait或者for循环下去。
3、state表示了线程此时的状态
4、condition只能用于互斥的模式,不能用于share模式。
addWaiter()//循环CAS变更tair或者head,插入同步队列。实现线程不会阻塞
public final void acquire(int arg) { if (!tryAcquire(arg) && acquireQueued(addWaiter(Node.EXCLUSIVE), arg)) selfInterrupt(); }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步