LinkedBlockingQueue.peek
时间: 2024-04-12 22:29:21 浏览: 19
LinkedBlockingQueue.peek() 方法用于获取队列中的头部元素,但不会删除该元素。如果队列为空,则返回 null。
该方法的签名如下:
```
E peek()
```
其中,E 表示队列中元素的类型。
例如,我们可以使用 peek() 方法来查看 LinkedBlockingQueue 中的头部元素,示例代码如下:
```java
import java.util.concurrent.LinkedBlockingQueue;
public class Main {
public static void main(String[] args) {
LinkedBlockingQueue<Integer> queue = new LinkedBlockingQueue<>();
queue.add(1);
queue.add(2);
queue.add(3);
Integer head = queue.peek();
System.out.println("Head: " + head); // 输出 Head: 1
}
}
```
在上述示例中,我们创建了一个 LinkedBlockingQueue 对象,并向队列中添加了三个整数。然后,我们使用 peek() 方法获取队列的头部元素,即 1,并将其打印输出。
相关问题
LinkedBlockingQueue 实例
下面是一个使用 LinkedBlockingQueue 的示例代码:
```java
import java.util.concurrent.LinkedBlockingQueue;
public class LinkedBlockingQueueExample {
public static void main(String[] args) throws InterruptedException {
LinkedBlockingQueue<String> queue = new LinkedBlockingQueue<>(3);
// 添加元素到队列
queue.put("Java");
queue.put("Python");
queue.put("C++");
// 队列已满,再次添加会阻塞
// queue.put("Ruby");
// 获取队列头部的元素
String head = queue.peek();
System.out.println("队列头部元素:" + head);
// 获取并移除队列头部的元素
String element = queue.take();
System.out.println("获取并移除队列头部元素:" + element);
// 队列长度
System.out.println("队列长度:" + queue.size());
// 遍历队列
for (String str : queue) {
System.out.println("元素:" + str);
}
}
}
```
输出结果:
```
队列头部元素:Java
获取并移除队列头部元素:Java
队列长度:2
元素:Python
元素:C++
```
在这个示例中,我们创建了一个容量为 3 的 LinkedBlockingQueue 对象。我们将 Java、Python 和 C++ 添加到队列中。由于我们的队列的容量为 3,因此当我们尝试将 Ruby 添加到队列时,它会被阻塞,直到队列中有空闲空间。我们使用 `peek()` 方法获取队列头部的元素,使用 `take()` 方法获取并移除队列头部的元素。我们使用 `size()` 方法获取队列的长度,并使用 `for-each` 循环遍历队列中的元素。
LinkedBlockingQueue方法
LinkedBlockingQueue类提供了多个入队和出队方法,其中包括以下几种常用方法:
- 入队方法:
- add(e):将指定元素插入队列的尾部,如果队列已满则抛出异常。
- offer(e):将指定元素插入队列的尾部,如果队列已满则返回false。
- offer(e, time, unit):将指定元素插入队列的尾部,如果队列已满则阻塞指定时间,超时后返回false。
- put(e):将指定元素插入队列的尾部,如果队列已满则阻塞直到有空间可用。
- 出队方法:
- remove():移除并返回队列的头部元素,如果队列为空则抛出异常。
- poll():移除并返回队列的头部元素,如果队列为空则返回null。
- poll(time, unit):移除并返回队列的头部元素,如果队列为空则阻塞指定时间,超时后返回null。
- take():移除并返回队列的头部元素,如果队列为空则阻塞直到有元素可用。
除了入队和出队方法,LinkedBlockingQueue还提供了获取队首元素的方法:element()和peek()。但需要注意的是,LinkedBlockingQueue不支持直接访问队列中的指定位置的元素。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [多线程基础(六、三)BlockingQueue用法详解之LinkedBlockingQueue](https://blog.csdn.net/m0_47743175/article/details/131151654)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]