对于队里的操作,有往其中添加元素,那么就会有取出元素的情况,我们把元素移除的行为称作出队。跟入队一样,出队同样用ArrayBlockingQueue中的方法进行实现:remove()、poll()、take()、poll。下面我们先来简单理解下出队的流程,再就其中两种出队的函数方法带来深入的探索。
1.出队流程
(1)初始化情况是队列满的情况。
(2)来了一个线程,将队列中第一个元素取走。此时,队列中 putIndex 索引没有变化,而 takeIndex 索引指向了下一个位置。
(3)假设又来一条线程执行取出值操作,takeIdex 索引将会指向下一个位置。
(4)继续进行出队操作,直到 takeIndex 索引指向最后一个位置
(5)再次进行取出时,可以看到似乎有一次回到了原点。这就环形队列队列。
2.出队方法
出队有四个方法,它们分别是remove()、poll()、take()、poll。
poll 方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
|
take 方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
以上就是java中ArrayBlockingQueue的出队方法,在学会了出队的流程后就可以进行实例操作。这里我们也需要对不同的函数方法有所了解,然后结合ArrayBlockingQueue的用法一起实现出队。