码迷,mamicode.com
首页 > 其他好文 > 详细

24_BlockingQueue接口

时间:2017-10-14 18:33:16      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:同步   使用   对象   queue类   lin   移除   缓存   没有   tor   

【BlockingQueue常见】

[ ArrayBlockingQueue ]

基于数组的阻塞队列的实现,在ArrayBlockingQueue内部,维护了一个定长数组,以便缓存队列中的数据对象,其内部没实现读写分离,也就意味着生产者和消费者不能完全并行,长度需要自定义,可以指定先进先出或者先进后出,也成为有界队列,在很多场合都非常适合使用。

[ LinkedBlockingQueue ]

基于链表的阻塞队列,与ArrayBlockingQueue类似,其内部维持着一个数据缓存队列(该队列由一个链表构成),LinkedBlockingQueue之所以能够高效地处理并发数据,是因为其内部实现采用分离锁(读写分离两个锁),从而实现生产者和消费者操作完全并行运行,它是一个无界队列。

[ PriorityBlockingQueue ]

基于优先级的阻塞队列(优先级的判断通过构造方法传入的Comparator对象来决定,即传入队列的对象必须实现Comparator接口),在实现PriorityBlockingQueue时,内部控制线程同步的锁采用的是公平锁,它也是一个无界队列。

[ DelayQueue ]

带延迟时间的队列。其中的元素只有当其指定的延迟时间到了,才能够从队列中获取到该元素。DelayQueue中的元素必须实现Delayed接口,DelayQueue没有大小限制的队列,应用场景很多,比如对缓存超时的数据进行移除,任务超时处理,空闲连接的关闭。

[ SynchronizedQueue ]

一种没有缓存的队列,生产者产生的数据会直接被消费者获取并且消费。

 

24_BlockingQueue接口

标签:同步   使用   对象   queue类   lin   移除   缓存   没有   tor   

原文地址:http://www.cnblogs.com/HigginCui/p/7667715.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!