今天时间学习LinkedBlockingDeque api,该类是JUC原子包中的类,通过单元测试代码把所有public api方法跑了一遍,大致了解了底层实现,初学乍练,有很多一知半解的地方,待后续有了深入理解再来补充
package test.java.util.concurrent;
import java.util.*;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.TimeUnit;
import org.junit.Test;
/**
* LinkedBlockingDeque的测试类
*
* @date 2020-07-20 21:45:32
*/
public class LinkedBlockingDequeTest {
/**
* 无参构造函数默认Integer.MAX_VALUE初始化容量
* @Param
*/
@Test
public void testConstruct0()throws Exception{
LinkedBlockingDeque testObj=new LinkedBlockingDeque();
System.out.println(testObj.toString());
}
/**
*指定大小的双向队列
* @Param
*/
@Test
public void testConstruct1()throws Exception{
LinkedBlockingDeque testObj=new LinkedBlockingDeque(3);
System.out.println(testObj.toString());
}
/**
*通过集合初始化双向链表
* @Param
*/
@Test
public void testConstruct2()throws Exception{
Set set=new HashSet();
set.add(3);
LinkedBlockingDeque testObj=new LinkedBlockingDeque(set);
System.out.println(testObj.toString());
}
/**
* 从队列头部开始添加
* @Param
*/
@Test
public void testAddFirst()throws Exception{
LinkedBlockingDeque testObj=new LinkedBlockingDeque();
testObj.addFirst(3333);
testObj.addFirst(3333111);
testObj.addFirst(333322);
System.out.println(testObj.getFirst());
System.out.println(testObj.getLast());
System.out.println(testObj.getLast());
System.out.println(testObj.getLast());
System.out.println(testObj.getFirst());
System.out.println(testObj.getFirst());
System.out.println(testObj.getFirst());
}
/**
*从队列尾部开始添加
* @Param
*/
@Test
public void testAddLast()throws Exception{
LinkedBlockingDeque testObj=new LinkedBlockingDeque();
testObj.addLast(3333);
testObj.addLast(3333111);
testObj.addLast(333322);
System.out.println(testObj.getFirst());
System.out.println(testObj.getLast());
}
/**
* 和addFirst处理一样,只是返回是否正确处理:true,false
* @Param
*/
@Test
public void testOfferFirst1()throws Exception{
LinkedBlockingDeque testObj=new LinkedBlockingDeque();
System.out.println(testObj.offerFirst(3333));
testObj.offerFirst(3333111);
System.out.println(testObj.getFirst());
System.out.println(testObj.getLast());
}
/**
*和addLast处理一样,只是返回是否正确处理:true,false
* @Param
*/
@Test
public void testOfferLast1()throws Exception{
LinkedBlockingDeque testObj=new LinkedBlockingDeque();
System.out.println(testObj.offerLast(3333));
testObj.offerLast(3333111);
System.out.println(testObj.getFirst());
System.out.println(testObj.getLast());
}
/**
* 从队列头部开始放,会等待
* @Param
*/
@Test
public void testPutFirst()throws Exception{
LinkedBlockingDeque testObj=new LinkedBlockingDeque();
testObj.putFirst(1);
System.out.println(testObj.getFirst());
}
/**
*从队列尾部开始放,会等待
* @Param
*/
@Test
public void testPutLast()throws Exception{
LinkedBlockingDeque testObj=new LinkedBlockingDeque();
testObj.putLast(1);
testObj.putLast(2);
System.out.println(testObj.getFirst());
}
/**
*从队列头部开始放
* @Param
*/
@Test
public void testOfferFirst()throws Exception{
LinkedBlockingDeque testObj=new LinkedBlockingDeque();
testObj.offerFirst(1,1L, TimeUnit.SECONDS);
testObj.offerFirst(2,1L, TimeUnit.SECONDS);
System.out.println(testObj.getFirst());
}
/**
*从队列尾部开始放
* @Param
*/
@Test
public void testOfferLast()throws Exception{
LinkedBlockingDeque testObj=new LinkedBlockingDeque();
tes