关于队列

本文介绍了串行队列(SerialQueue)与并行队列(ConcurrentQueue)的区别,探讨了这两种队列在任务执行上的不同特性。串行队列遵循严格的先入先出原则,每个任务必须等待前一个任务完成后才能执行;而并行队列则允许多个任务同时执行,只要队列前面的任务出队列,不论其是否完成,后续任务即可开始执行。此外,还讨论了队列的同步与异步执行方式。


队列分为 并行队列,串行队列。

无论是Serial Queue还是Concurrent Queue,都是队列,只要是队列都遵循FIFO(First In First Out -- 先入先出)的规则,排队嘛,当然是谁先来的谁先走了。不过在Serial Queue中要等到前面的任务出队列并执行完后,下一个任务才能出队列进行执行。而Concurrent Queue则不然,只要是队列前面的任务出队列了,并且还有有空余线程,不管前面的任务是否执行完了,下一任务都可以进行出队列。


队列可以同步执行也可以异步执行。

### Java 队列接口及其常用方法 在 Java 中,`Queue` 接口提供了用于插入、提取和检查元素的方法。这些操作通常遵循先进先出 (FIFO) 原则[^1]。 #### 主要方法概述 - `boolean add(E e)`:将指定元素插入此队列(如果立即可行且不会违反容量限制),成功时返回 true;当使用有容量限制的队列时,可以使用此方法来确保永远不会失败。 - `boolean offer(E e)`:将指定元素插入此队列,如果该队列已满,则返回 false。这是处理可能无法总是接受新元素的情况下的首选方式。 - `E remove()` 和 `E poll()`:获取并移除此队列的头部;如果没有可用的元素,则前者抛出异常而后者返回 null。 - `E element()` 和 `E peek()`:检索但不移除此队列的头部;如果没有可用的元素,则前者抛出异常而后者返回 null。 下面是一个简单的代码示例展示如何使用上述提到的一些基本功能: ```java import java.util.LinkedList; import java.util.Queue; public class QueueExample { public static void main(String[] args) { // 创建一个 LinkedList 实现的 Queue Queue<String> queue = new LinkedList<>(); // 添加元素到队列中 System.out.println(queue.offer("Apple")); // 输出: true System.out.println(queue.offer("Banana")); // 输出: true // 查看队首元素而不移除它 System.out.println(queue.peek()); // 输出: Apple // 移除并查看队首元素 System.out.println(queue.poll()); // 输出: Apple // 再次尝试查看新的队首元素 System.out.println(queue.peek()); // 输出: Banana } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值