Queue
2017-09-18 00:00
10 查看
非阻塞的Queue
ConcurrentLinkedQueue
常用的并发队列有阻塞队列和非阻塞队列,前者使用锁实现,后者则使用CAS非阻塞算法实现,使用非阻塞队列一般性能比较好,下面就看看常用的非阻塞ConcurrentLinkedQueue是如何使用CAS实现的。
BlockingQueue
ArrayBlockingQueue,其构造函数必须带一个int参数来指明其大小
LinkedBlockingQueue,若其构造函数带一个规定大小的参数,生成的BlockingQueue有大小限制,若不带大小参数,所生成的BlockingQueue的大小由Integer.MAX_VALUE来决定
PriorityBlockingQueue,其所含对象的排序不是FIFO,而是依据对象的自然排序顺序或者是构造函数的Comparator决定的顺序
DelayQueue队列中每个元素都有个过期时间,并且队列是个优先级队列,当从队列获取元素时候,只有过期元素才会出队列。
SynchronousQueue是一个没有数据缓冲的BlockingQueue,
ConcurrentLinkedQueue
常用的并发队列有阻塞队列和非阻塞队列,前者使用锁实现,后者则使用CAS非阻塞算法实现,使用非阻塞队列一般性能比较好,下面就看看常用的非阻塞ConcurrentLinkedQueue是如何使用CAS实现的。
BlockingQueue
可能报异常 | 返回布尔值 | 可能阻塞 | 设定等待时间 | |
入队 | add(e) | offer(e) | put(e) | offer(e, timeout, unit) |
出队 | remove() | poll() | take() | poll(timeout, unit) |
查看 | element() | peek() | 无 | 无 |
LinkedBlockingQueue,若其构造函数带一个规定大小的参数,生成的BlockingQueue有大小限制,若不带大小参数,所生成的BlockingQueue的大小由Integer.MAX_VALUE来决定
PriorityBlockingQueue,其所含对象的排序不是FIFO,而是依据对象的自然排序顺序或者是构造函数的Comparator决定的顺序
DelayQueue队列中每个元素都有个过期时间,并且队列是个优先级队列,当从队列获取元素时候,只有过期元素才会出队列。
SynchronousQueue是一个没有数据缓冲的BlockingQueue,
相关文章推荐
- 深入掌握JMS(四):实战Queue
- java集合之Queue
- priority_queue用法小结
- 练习--python中的Queue与多进程(multiprocessing)
- Echo Server,AsyncSocket,SocketAsyncEvent,SocketAsyncEventArgs,AsyncQueue
- linux内核的 等待队列 使用方法,wait_queue_head_t,进程休眠
- 总结C# 集合类 Array Arraylist List Hashtable Dictionary Stack Queue
- leetcode Implement Queue using Stacks
- semaphore, completion 和 wait_queue
- 深入理解dispatch_queue
- WCF4.0新特性体验(9):非破坏性队列消息接收(Non-destructive queue receive )
- 并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法
- priority_queue & 结构体||类 & 自定义比较函数cmp
- leetcode -- Implement Queue/Stacks using Stacks/Queue -- 简单重点
- Linux queue.h之TAILQ队列分析!
- Implement Queue using Stacks
- Stack和Queue的C#实现
- Android:Handler+Looper+MessageQueue+Thread(线程间的通信)随记
- [Qt]QObject::connect: Cannot queue arguments of type 'QString&'
- 例题5-6 UVA 540 Team Queue团体队列