ArrayBlockingQueue一点理解

老规矩来个类图 方便大家理解
ArrayBlockingQueue一点理解
先来看一下put方法
ArrayBlockingQueue一点理解
具体的入队方法
ArrayBlockingQueue一点理解
ArrayBlockingQueue一点理解
ArrayBlockingQueue一点理解
在看看下peek是如何实现的
peek 的方法比较简单
直接返回对应位置的元素,不对队列中的元素有任何的污染
ArrayBlockingQueue一点理解
ArrayBlockingQueue一点理解
接下来看下pool
ArrayBlockingQueue一点理解
ArrayBlockingQueue一点理解
到这里我们似乎恍然大悟了,take方法和pool方法共用的是一个出队的方法,所以他们的处理类似,最终都是将当前的takeIndex加1,相当于一个出队的过程,那么下次再取的时候其实也拿不到这个元素了。而peek方法则比较简单,直接根据对应的小标进行返回。