1、阻塞和非阻塞
ConcurrentLinkedQueue是非阻塞的线程安全队列
2、ConcurrentLinkedQueue是无界的
LinkedBlockingQueue可以指定大小
3、加锁方式
ConcurrentLinkedQueue使用CAS 原子指令来保证线程安全。吞吐量更高
LinkedBlockingQueue 使用ReentrantLock方式加锁
4、使用场景
LinkedBlockingQueue通常用于生产消费模型,有阻塞的场景。
其他非场景如何线程不想阻塞 可考虑ConcurrentLinkedQueue
4、ConcurrentLinkedQueue不一致性
ConcurrentLinkedQueue的head tail并非总是指向队列头尾元素,可能处于不一致状态
本文对比分析了ConcurrentLinkedQueue与LinkedBlockingQueue两种线程安全队列的不同特性,包括阻塞与非阻塞特性、队列边界、加锁方式及适用场景。ConcurrentLinkedQueue采用CAS保证线程安全,适用于高吞吐量场景;而LinkedBlockingQueue通过ReentrantLock实现,适合生产消费模型。同时,文中还提及了ConcurrentLinkedQueue的一致性问题。
938

被折叠的 条评论
为什么被折叠?



