AQS 内部维护一个共享资源变量和线程期待队列,如果被哀求的共享资源空闲,那么就将当前哀求资源的线程设置为有效的工作线程,将共享资源设置为锁定状态;如果共享资源被占用,就需要一定的阻塞期待唤醒机制来保证锁分配。这个机制主要用的是 CLH 队列的变体实现的,将临时获取不到锁的线程加入到期待队列中,待条件允许的时候将线程从队列中取出并进行唤醒。CLH 队列是一个单向链表队列,对应的还有 CLH 锁实现,它是一个基于逻辑队列非线程饥饿的一种自旋公平锁实现,由 Craig、Landin 和 Hagersten 三位大佬发明,因此定名为 CLH 锁。关于这方面的技术知识讲解可以参阅这篇文章:多图详解 CLH 锁的原理与实现。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |