上一篇讲了栈,这一篇来简单讲讲队列,这java中,队列比栈啰嗦一点,queue被设计成了一个接口,它分为阻塞式和非阻塞式。阻塞队列与非阻塞队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素。同样,试图往已满的阻塞队列中添加新元素的线程同样也会被阻塞,直到其他的线程使队列重新变得空闲起来,如从队列中移除一个或者多个元素,或者完全清空队列。java源码系列。
里面有五个方法:
boolean add(E e); //添加尾部元素
boolean offer(E e); //这个也是添加尾部方法,如果是有容量限制的队列,这个方法比add要好一点
E remove(); //移除头部元素,如果队列是空,将会抛出异常
E poll(); //移除头部元素,如果队列是空,返回null,不会抛出异常
E element(); //获取队列头部元素,不会移除,如果队列是空,会抛出异常
E peek(); //获取队列头部元素,不会移除,如果队列是空,返回null,不会抛出异常java中Queue的实现有很多,记住最主要的一点,队列是尾部插入数据,从头部开始删除,也就常说的先进先出或者后进后出。这里面没有往下深入讲解,原理清楚了,还怕掌握不了吗?