当前位置: 首页 > news >正文

ArrayBlockingQueue

 同步队列超出长度时,不同的返回形式可以分为以下四种。

会抛异常不会抛异常,有返回值死等,直到可以插入值或者取到值设置等待超时时间
添加方法add()offfer()put()offer(E e,long timeout, TimeUnit unit)
删除方法remove()poll()take()poll(long timeout, TimeUnit unit)

 add() & remove():

  • add()方法没有返回值
  • remove()删除队列元素并返回。
//创建一个长度为3的队列
ArrayBlockingQueue<String> queue = new ArrayBlockingQueue<String>(3);
queue.add("a");
queue.add("b");
queue.add("c");//存放的元素个数超过队列长度时抛出异常 
//java.lang.IllegalStateException: Queue full
//queue.add("d");System.out.println(queue.remove());
System.out.println(queue.remove());
System.out.println(queue.remove());//取出队列元素,为空时抛出异常,java.util.NoSuchElementException
//System.out.println(queue.remove());

offer() & pull()

  • offer()存储成功时返回true,失败返回false
  • pull()取出元素,队列为空时返回null
//创建一个长度为3的队列
ArrayBlockingQueue<String> queue = new ArrayBlockingQueue<String>(3);
System.out.println(queue.offer("a"));
System.out.println(queue.offer("b"));
System.out.println(queue.offer("c"));//存放的元素个数超过队列长度时,返回false
System.out.println(queue.offer("d"));System.out.println(queue.poll());
System.out.println(queue.poll());
System.out.println(queue.poll());//队列为空时返回null
System.out.println(queue.poll());

put() & take()

  • put()存放元素队列满时,将无限期等待,直到有空位
  • take()取出元素队列为空时,将无限期等待,直到取到
//创建一个长度为3的队列
ArrayBlockingQueue<String> queue = new ArrayBlockingQueue<String>(3);
queue.put("a");
queue.put("b");
queue.put("c");
//没有位置时将阻塞,无限期等待
//queue.put("d");System.out.println(queue.take());
System.out.println(queue.take());
System.out.println(queue.take());
//队列为空时将阻塞,无限期等待
//System.out.println(queue.take());

offer(E e,long timeout, TimeUnit unit)  &  pull(long timeout, TimeUnit unit)

  • offer()中e为要存放的元素,timeout为等待超时时间,unit为等待超时时间单位(天、时、分、秒、毫秒)
  • pull()中timeout、unit与offer()意思一样
//创建一个长度为3的队列
ArrayBlockingQueue<String> queue = new ArrayBlockingQueue<String>(3);
System.out.println(queue.offer("a"));
System.out.println(queue.offer("b"));
System.out.println(queue.offer("c"));//存放的元素个数超过队列长度时,等待3秒,还不能存,返回false
System.out.println(queue.offer("d", 3, TimeUnit.SECONDS));System.out.println(queue.poll());
System.out.println(queue.poll());
System.out.println(queue.poll());队列为空时,等待3秒,还为空则返回null
System.out.println(queue.poll(3,TimeUnit.SECONDS));

 

http://www.lryc.cn/news/18350.html

相关文章:

  • DeepLabV3+:对预测处理的详解
  • 【Git】与“三年经验”就差个分支操作的距离
  • 【经验】win10设置自启动
  • Linux SPI-NAND 驱动开发指南
  • 【THREE.JS学习(3)】使用THREEJS加载GeoJSON地图数据
  • 在windows搭建Redis集群并整合入Springboot项目
  • C++【内存管理】
  • Spring Cloud Nacos源码讲解(六)- Nacos客户端服务发现
  • 华为OD机试题,用 Java 解【计算最大乘积】问题
  • 蓝牙运动耳机哪个好,比较好的运动蓝牙耳机
  • 苹果设计可变色Apple Watch表带,智能穿戴玩法多
  • Elasticsearch集群Yellow亚健康状态修复
  • 第52讲:SQL优化之UPDATE更新操作的优化
  • logback 自定义日志输出到数据库
  • < elementUi 组件插件: el-table表格拖拽修改列宽及行高 及 使用注意事项 >
  • 微信小程序的分享朋友圈
  • 华为OD机试真题Python实现【 寻找路径】真题+解题思路+代码(20222023)
  • 九头蛇hydra爆破http示例
  • jQuery基本使用
  • 互联网企业如何进行数字化转型?业务需求迭代频繁的应对之策!
  • 前端学习日记——Vue之Vuex初识(一)
  • 【C++】Windows动态库【.DLL文件】制作方法总结
  • C 语言编程 — HelloWorld
  • 蓝桥杯入门即劝退(二十一)三数之和(梦破碎的地方)
  • element 下拉框支持搜索并输入
  • JVM详解——垃圾回收
  • spring之集成Mybatis
  • 【面试宝典】准备面试了~集合
  • 华为OD机试真题Python实现【GPU 调度】真题+解题思路+代码(20222023)
  • gcc编译C源程序