今天学习ArrayBlockingQueue,该类是JUC原子包中的类,通过单元测试代码把所有public api方法跑了一遍,大致了解了底层实现,初学乍练,有很多一知半解的地方,待后续有了深入理解再来补充
package test.java.util.concurrent;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Spliterator;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
import org.junit.Test;
/**
* ArrayBlockingQueue的测试类
*
* @author zqw
* @date 2020-06-28 22:24:43
*/
public class ArrayBlockingQueueTest {
/**
* 初始化数组队列
* void
* @Param 数组大小
* @author zhqwm
* @date 2020/6/28 23:01
*/
@Test
public void testConstruct0()throws Exception{
ArrayBlockingQueue testObj=new ArrayBlockingQueue(33);
System.out.println(testObj.size());
}
/**
* 初始化数组队列
* void
* @Param 数组大小
* 是否为公平锁(详情见ReentrantLock)
* @author zhqwm
* @date 2020/6/28 23:01
*/
@Test
public void testConstruct1()throws Exception{
ArrayBlockingQueue testObj=new ArrayBlockingQueue(33,true);
System.out.println(testObj.size());
}
/**
* 初始化数组队列
* void
* @Param 数组大小
* 是否为公平锁(详情见ReentrantLock)
* 要添加的元素
* @author zhqwm
* @date 2020/6/28 23:01
*/
@Test
public void testConstruct2()throws Exception{
List<Integer> list=new ArrayList<>();
list.add(3);
list.add(4);
list.add(5);
ArrayBlockingQueue testObj=new ArrayBlockingQueue(33,true,list);
System.out.println(testObj.size());
System.out.println(testObj.take());
}
/**
* 添加元素
* add和offer在arrayBlockingQueue中效果一样
* void
* @Param
* @author zhqwm
* @date 2020/6/28 23:01
*/
@Test