各种队列的区别
来源:9-20 并发队列简介

weixin_慕工程6414819
2021-04-28
老师,我一直没太明白各种队列的区别。
ArrayBlockQueue, LinkedBlockingQueue 首先这两个,我试了一下都可以设置他们的大小,只不过ArrayBlockQueue必须要给定大小,LinkedBlockingQueue如果不给默认是是整数最大值,所以这两个的区别是不是就是ArrayDeque和LinkedList的区别,他们内部一个是可变数组一个是双链表?
其次是 SynchronousQueue这个队列,我尝试着在这个队列放入了很多个数据,然后取出这些数据,发现也是可以一个个取出来,那么他应该也是一个有大小的队列具有存储的功能然后FIFO,但是您上课说这个是没有存储,直接用来交换,我就不是很理解体现在哪?
写回答
1回答
-
悟空
2021-04-28
对,这两个的区别就是ArrayDeque和LinkedList的区别,他们内部一个是可变数组一个是双链表,数据结构不同。
SynchronousQueue不能同时存多个数据,你可以debug这个代码试试,无法走到下面的。
public static void main(String[] args) throws InterruptedException { SynchronousQueue<Object> objects = new SynchronousQueue<>(); objects.put(new Object()); objects.put(new Object()); objects.put(new Object()); }
022021-04-28
相似问题