并发容器:这些容器的关键方法大部分都实现了线程安全的功能,却不使用同步关键字(synchronized).值得注意的是Queue接口本身定义的几个常用方法的区别,
1),add方法和offer方法的区别在于超出容量限制时前者抛出异常,后者返回false;
2),remove方法和poll方法都从队列中拿掉元素并返回,但是他们的区别在于空队列下操作前者抛出异常,而后者返回null;
3),element方法和peek方法都返回队列顶端的元素,但是不把元素从队列中删掉,区别在于前者在空队列的时候抛出异常,后者返回null。
阻塞队列接口:BlockingQueue.class
双端阻塞队列接口:BlockingDeque.class
阻塞队列,数组实现:ArrayBlockingQueue.class
阻塞双端队列,链表实现:LinkedBlockingDeque.class
阻塞队列,链表实现:LinkedBlockingQueue.class
阻塞队列,并且元素是Delay的子类,保证元素在达到一定时间后才可以取得到:DelayQueue.class
优先级阻塞队列:PriorityBlockingQueue.class
SynchronousQueue.class,同步队列,但是队列长度为0,生产者放入队列的操作会被阻塞,直到消费者过来取,所以这个队列根本不需要空间存放元素;
非阻塞队列:
ConcurrentLinkedDeque.class,非阻塞双端队列,链表实现
ConcurrentLinkedQueue.class,非阻塞队列,链表实现
转移队列:
TransferQueue.class,转移队列接口,生产者要等消费者消费的队列,生产者尝