Java 并发工具包中定义了阻塞队列 BlockingQueue 和 BlockingDueue.阻塞队列在前面的队列定义基础上增加了以下几个方法,来支持阻塞操作.潍坊IT培训负责整理
take:取出并移除元素,如队列为空则一直阻塞直到有元素;
put:插入元素,如队列满则一直阻塞直到有空位可以插入元素;
可超时的offer:插入元素并指定超时时间,如队列满等待指定的时间;
可超时的poll:取出并移除元素,如队列空等待指定的时间.
Java 中的 Queue 实现
Java 中的队列实现,基本上都继承了 AbstractQueue 类.AbstractQueue 抽象队列实现了 add、remove、element 方法,这些方法调用 offer、poll、peek 方法并在失败时抛出异常,此外还提供了清空队列的 clear 方法和批量插入元素的 addAll 方法.

潍坊IT培训的老师说,非阻塞队列访问队列元素时可以立即返回,主要有优先级队列 PriorityQueue、并发队列 ConcurrentLinkedQueue.
PriorityQueue 是一个无界优先级队列,基于一个优先级堆实现.队列中的元素按照自然排序先后排列,或者使用创建时提供的 Comparator 比较先后顺序.优先级队列需要比较顺序,因此不能包含 null 元素.使用自然顺序排序时,元素必须是可以比较大小的,否则会导致类型转换异常.优先级队列的头部元素是队列中按照顺序最靠前的元素,如有多个元素排序相等则随机选择一个.
ConcurrentLinkedQueue 是一个基于链表实现的线程安全的无界队列.内部元素按先进先出的顺序排序,最后插入的元素位于队列尾部.ConcurrentLinkedQueue 不允许插入 null.当有多个线程同时访问队列时,此队列是一个比较合适的选择.
Queue 接口的子接口 BlockingQueue 定义了阻塞队列.阻塞队列访问队列元素时,可能会一直阻塞直到操作完成,比如从空队列中取元素、向满队列中插入元素等,主要有延时队列、同步队列、链表阻塞队列、数组阻塞队列、优先级阻塞队列.
DelayQueue 是一个无界延时队列,元素只有在延时时间已经过期的情况下才能被访问.头部元素是队列中延时时间过期最久的元素.如果没有元素过期则没有头部元素,取元素的方法会返回 null.当元素过期时,调用元素的 getDelay 方法会返回 0 或 负数.未过期的元素不能被取出,但是统计队列大小时仍然包含未过期元素.
以上就是潍坊IT培训给大家做的内容详解,更多关于IT的学习,请继续关注潍坊IT培训