阻塞队列BlockingQueue
阻塞队列通常用于一个队列生产,另一个队列消费的情况。因为Queue只能一个线程生产每一个线程消费,进入的数据只能先进先出。
个人感觉这个队列的用法和set以及list有点类似,应该算是collection的并发工具。BlockingQueue的实现类有以下几个:ArrayBlockingQueue、DelayQueue、LinkedBlockingQueue、PriorityBlockingQueue和SynchronizedQueue。
ArrayBlockingQueue:
有限数组阻塞队列,初始的时候需要制定容量,并且这个阻塞队列是长度有限的。
DelayQueue:
延迟阻塞队列。使用这个队列的时候,传输的对象需要实现Delayed接口。而因为Delayed本身已经继承了comparable接口,所以在实现的时候需要重写两个方法,一个是getDelayed(),一个是compareTo()。getDelayed需要用到TimeUnit类,这个类是对线程的操作做简单的封装的枚举,简化对线程的操作。如果getDelayed返回0或者负数,那么这个数据就被认为是过期。
LinkedBlockingQueue:BlockingQueue以链表形式实现BlockingQueue。
PriorityBlockingQueue:这个是无界的并发队列,不允许null值。
参考:
- java并发基础知识:http://tutorials.jenkov.com/java-concurrency/index.html
- 2.TimeUnit的使用:https://www.cnblogs.com/zhaoyanjun/p/5486726.html
并发工具包——current:https://blog.csdn.net/axi295309066/article/details/65665090