并发编程(并发队列)

1.阻塞队列和非阻塞队列的区别?

答:

阻塞队列:当队列时空的,从队列中获取元素操作将会被阻塞,或者当队列满时,往队列里面添加时将会被阻塞。

2.有哪些队列?

答:

1.ArrayDeque                          (数组双端队列)

2.PriorityQueue                       (优先级队列)

3.ConcurrentLinkedQueue(基于链表的并发队列)

4.DelayQueue                         (延期阻塞队列,阻塞队列实现了BlockingQueue接口)

5.ArrayBlockingQueue            (基于数组的并发阻塞队列)

6.LinkedBlockingQueue        (基于链表的FIFO阻塞队列)

7.LinkedBlockingDeque        (基于链表的FIFO双端阻塞队列)

8.PriorityBlockingQueue          (带优先级的无阻塞队列)

9.SynchronousQueue              (并发同步阻塞队列)

3.ConcurrentLinkedQueue简介

答:

1.ConcurrentLikedDeque是一个适用于高并发场景下的队列,通过无锁的方式实现,实现了高并发状态下的高性能。

2.通常ConcurrentLinkedDeque性能要好于BlockingQueue,它是一个基于链接节点无界线程安全队列。

3.遵循先进先出(FIFO)原则,队列不允许为null元素。

4.add()方法和offer()方法都是添加元素。在ConcurrentLinkedDeque中这两个了方法无区别。

5.pool()和peek()都是取头元素节点。区别在于前者会删除该元素节点,后者不会。

4.ArrayBlockingQueue简介

答:

1.ArrayBlockingQueue是一个有界的阻塞队列

2.内部实现是一个数组。

3.先进先出(FIFO),最近插入的的数据是尾部,最新移除的数据是头部。

5.LinkedBlockingQueue简介

答:

1.LinkedBlockingQueue是一个可配置的队列大小的阻塞队列。如果初始化时指定队列大小,那就是有界队列,如果没有指定,那就是无界队列(无界:采用了默认大小为Integer.MAX_VALUE的容量)

2.内部实现是一个链表。

3.先进先出(FIFO)。

6.PriorityBlockingQueue简介

答:

1.是一个无界队列,排序规则和java.util.PriorityQueue一样。

2.允许插入null对象。所有插入PriorityBlockingQueue的对象必须实现java.lang.Comparable接口,队列优先级的排序规则是根据我们对这个接口的实现来定义的。

3.可以从PriorityBlockingQueue获得一个迭代器Iterator,但这个迭代器并不保证按照优先级顺。

7.SynchronousQueue简介

答:

1.SynchronousQueue队列内部只允许容纳一个元素,当一个线程插入一个元素后会被阻塞,除非这个元素被另一个线程消费。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值