方式 抛出异常 有返回值,不抛出异常 阻塞等待 超时等待
添加 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());
}
}

运行结果:

最新文章

  1. css3使用技巧:细线边框的3种不同的写法
  2. 转-ArcGIS Engine许可初始化
  3. 用CMake设置Visual Studio工程中预处理器定义值
  4. 酷派大神F2系列使用QPST进行nv备份和恢复,解决无信号问题(附备份文件)
  5. Revit二次开发示例:HelloRevit
  6. Spring中IOC和AOP的详细解释
  7. UILabel的相关属性设置
  8. java list中的对象,按对象某属性排序
  9. centOS学习part1:操作系统安装
  10. Java反射机制学习
  11. [网络] C# NetHelper网络通信编程类教程与源码下载
  12. iOS学习之网易新闻简易Demo
  13. 把VS2010的智能代码提示和注解从英文变成中文
  14. 五分钟学习React(四):什么是JSX
  15. [2015-06-10 20:53:50 - Android SDK] Error when loading the SDK:
  16. 在MFC中使用按下按钮出现选择文件对话框,选中一个指定文件,并将其地址显示到指定的编辑框中
  17. 你真的了解字典(Dictionary)吗?
  18. C#QQ邮箱验证
  19. PDF 补丁丁 0.6.0.3355 版发布(修复阅读模式、书签缩放的问题)
  20. vue.js相关UI组件收集

热门文章

  1. Sqoop import export参数
  2. Codeforces Round #653 (Div. 3)
  3. UVA1401 Remember the Word 字典树维护dp
  4. codeforces626D . Jerry's Protest (概率)
  5. Gym 100796K Profact
  6. HDU - 3281 dp
  7. httprunner(8)用例调用-RunTestCase
  8. Kubernets二进制安装(11)之部署Node节点服务的kubelet
  9. Oracle数据库故障处理方法
  10. 鸟哥的linux私房菜——第十二章学习(Shell Scripts)