阻塞队列——四组API
2024-08-31 05:42:33
方式 | 抛出异常 | 有返回值,不抛出异常 | 阻塞等待 | 超时等待 |
---|---|---|---|---|
添加 | add() | offer() | put() | offer(...) |
移除 | remove() | poll() | take() | poll(...) |
检测队首元素 | element() | peek() |
第一组
1、添加抛出异常
public class Demo01 {
public static void main(String[] args) {
// 构造方法参数:public ArrayBlockingQueue(int capacity, boolean fair)
// 第一个参数:初始化阻塞队列的容量大小
// 第二个参数:指定该阻塞队列是否为公平或不公平锁
BlockingQueue<String> queue = new ArrayBlockingQueue<>(2);
// 添加元素
queue.add("a");
queue.add("b");
queue.add("c");
}
}
运行结果:
2、移除抛出异常
public class Demo01 {
public static void main(String[] args) {
// 构造方法参数:public ArrayBlockingQueue(int capacity, boolean fair)
// 第一个参数:初始化阻塞队列的容量大小
// 第二个参数:指定该阻塞队列是否为公平或不公平锁
BlockingQueue<String> queue = new ArrayBlockingQueue<>(2);
// 添加元素
System.out.println(queue.add("a"));
System.out.println(queue.add("b"));
// 移除元素
queue.remove();
queue.remove();
queue.remove();
}
}
运行结果:
第二组
1、添加有返回值
package com.lzp.blockqueue;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
/**
* @Author LZP
* @Date 2020/8/8 8:12
* @Version 1.0
*
* 有返回值,且不抛出异常
*/
public class Demo02 {
public static void main(String[] args) {
// 创建阻塞队列对象
BlockingQueue<Integer> queue = new ArrayBlockingQueue<>(3);
// 添加元素:若添加成功,则返回true,反之,则返回false
System.out.println(queue.offer(1));
System.out.println(queue.offer(2));
System.out.println(queue.offer(3));
System.out.println(queue.offer(4));
}
}
运行结果:
2、移除有返回值
package com.lzp.blockqueue;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
/**
* @Author LZP
* @Date 2020/8/8 8:12
* @Version 1.0
*
* 有返回值,且不抛出异常
*/
public class Demo02 {
public static void main(String[] args) {
// 创建阻塞队列对象
BlockingQueue<Integer> queue = new ArrayBlockingQueue<>(3);
// 添加元素:若添加成功,则返回true,反之,则返回false
System.out.println(queue.offer(1));
System.out.println(queue.offer(2));
System.out.println(queue.offer(3));
System.out.println(queue.offer(4));
// 移除元素:若移除成功,则返回移除的值,反之,则返回false
System.out.println(queue.poll());
System.out.println(queue.poll());
System.out.println(queue.poll());
System.out.println(queue.poll());
}
}
运行结果:
最新文章
- css3使用技巧:细线边框的3种不同的写法
- 转-ArcGIS Engine许可初始化
- 用CMake设置Visual Studio工程中预处理器定义值
- 酷派大神F2系列使用QPST进行nv备份和恢复,解决无信号问题(附备份文件)
- Revit二次开发示例:HelloRevit
- Spring中IOC和AOP的详细解释
- UILabel的相关属性设置
- java list中的对象,按对象某属性排序
- centOS学习part1:操作系统安装
- Java反射机制学习
- [网络] C# NetHelper网络通信编程类教程与源码下载
- iOS学习之网易新闻简易Demo
- 把VS2010的智能代码提示和注解从英文变成中文
- 五分钟学习React(四):什么是JSX
- [2015-06-10 20:53:50 - Android SDK] Error when loading the SDK:
- 在MFC中使用按下按钮出现选择文件对话框,选中一个指定文件,并将其地址显示到指定的编辑框中
- 你真的了解字典(Dictionary)吗?
- C#QQ邮箱验证
- PDF 补丁丁 0.6.0.3355 版发布(修复阅读模式、书签缩放的问题)
- vue.js相关UI组件收集
热门文章
- Sqoop import export参数
- Codeforces Round #653 (Div. 3)
- UVA1401 Remember the Word 字典树维护dp
- codeforces626D . Jerry's Protest (概率)
- Gym 100796K Profact
- HDU - 3281 dp
- httprunner(8)用例调用-RunTestCase
- Kubernets二进制安装(11)之部署Node节点服务的kubelet
- Oracle数据库故障处理方法
- 鸟哥的linux私房菜——第十二章学习(Shell Scripts)