-
阻塞队列:通过加锁的方式让队列的生产者或者消费者处于等待状态,加锁只能单个线程执行
比如:
ArrayBlockingQueue(有界队列)通过lock实现线程安全,只有一把锁,所以产生者和消费者只能有一个 处于工作状态
LinkedBlockingQueue(无界队列)通过链表实现队列,生产者和消费者各拥有一把锁
LinkedBlockingDeque 通过双向链表实现,优点是可以实现栈的功能 -
非阻塞队列:通过cas的方式来保证线程安全,多个线程可以并发生产或者消费
比如:
ConcurrentLinkedQueue通过cas的方式实现线程安全,所以多个线程可以并发操作队列
ConcurrentLinkedDeque内部实现:双向链表+cas
java阻塞队列和非阻塞队列的区别
于 2022-01-27 01:47:03 首次发布