消息队列可食用Queue来实现消息队列, Queue可以分为三类:
双端队列(Deque): 是Queue的子类也是Queue的补充类,头部和尾部都支持元素插入和获取
阻塞队列:在元素操作时(添加或删除),如果没有成功,会阻塞等待执行, eg: 如果 添加元素时,队列元素已满,队列则会阻塞等待直到有空位时再插入
非阻塞队列: 同阻塞队列相反,它会直接返回操作的结果,而非阻塞等操作,双端对列也属于非阻塞队列.
/**
* 自定义消息队列
* @author xulihui
* @date 2020/4/12 18:50
*/
public class CustomQueue {
// 定义消息队列
private static Queue<String> queue = new LinkedList<>();
//生产者
private static void producer() {
// 添加消息
queue.add("1");
queue.add("2");
queue.add("3");
}
public static void consumer() {
while (!queue.isEmpty()) {
/**
* Queue 中 remove() 和 poll()都是用来从队列头部删除一个元素。
* 在队列元素为空的情况下,remove() 方法会抛出NoSuchElementException异常,poll() 方法只会返回 null 。
*/
System.out.println(queue.poll());
}
}
public static void main(String[] args) {
// 调用生产者
producer();
// 调用消费者
consumer();
}
}