为什么AQS使用的双向链表
时间: 2023-09-17 22:09:42 浏览: 113
JUC核心类AQS的底层原理
AQS(AbstractQueuedSynchronizer)使用双向链表作为等待队列,是因为它需要支持在队列的两端进行插入和删除操作。在等待队列中,每个线程都被封装成一个节点,当线程需要等待时,它会加入到队列的尾部。当某个线程释放锁时,它会将自己所在的节点从队列的头部移除,并将队列中的下一个节点(如果有的话)唤醒。
使用双向链表可以方便地在队列的头部和尾部进行插入和删除操作,这样可以提高锁的并发性能。此外,AQS 还使用了 CAS 操作来保证在多线程环境下对队列的并发访问是安全的。
阅读全文