LinkedBlockingQueue、ArrayBlockingQueue

231 阅读1分钟

LinkedBlockingQueue(单链表)

1、添加操作

add:满了直接抛异常
put:一直阻塞,调用入队操作enqueue
offer:直接返回false,不会阻塞
offer(E e, long timeout, TimeUnit unit):指定超时时间后返回false

2、出队操作

take:为空时,一直阻塞
poll:返回null
poll(long timeout, TimeUnit unit):指定超时后返回null
remove():为空时,抛出异常

3、获取元素

peek:直接返回,为空时为null
element():为空时,抛出异常

ArrayBlockingQueue(数组)

1、添加操作

add:满了直接抛异常
put:一直阻塞,调用入队操作enqueue
offer:直接返回false,不会阻塞
offer(E e, long timeout, TimeUnit unit):指定超时时间后返回false

2、出队操作

take:为空时,一直阻塞
poll:返回null
poll(long timeout, TimeUnit unit):指定超时后返回null
remove():为空时,抛出异常

3、获取元素

peek:直接返回,为空时为null
element():为空时,抛出异常