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

购书网站开发网站原创页面

购书网站开发,网站原创页面,网站建设 常州,最有性价比的网站建设文章目录 1、阻塞队列概述2、阻塞队列分类3、 阻塞队列的四组核心方法4、Demo 队列#xff0c;先进先出#xff0c;类似排队栈#xff0c;先进后出#xff0c;用于要优先处理最近发生的事件的场景 1、阻塞队列概述 阻塞队列#xff0c;一个生产消费模式#xff0c;当先进先出类似排队栈先进后出用于要优先处理最近发生的事件的场景 1、阻塞队列概述 阻塞队列一个生产消费模式当 队列放满了put不进去了put的线程阻塞挂起等可以put了再唤起取没了只能等待取的线程阻塞挂起等可以取了再唤起 而亮点就在于什么时候阻塞线程什么时候唤起线程则由BlockingQueue一手包办。 2、阻塞队列分类 ArrayBlockingQueue底层是一个定长数组有界阻塞队列 LinkedBlockingQueue底层是一个链表有界阻塞队列但它的默认值其实足够大了大小默认值为Integer.MAX_VALUE DelayQueue队列中的元素只有到了指定的延迟时间才能获取到该元素。是无界队列因此生产者线程永不阻塞 PriorityBlockingQueue支持优先级排序的无界阻塞队列优先级的判断通过其构造方法传入Compator对象决定 SynchronousQueue无中介一种不存储元素的阻塞队列、单个元素的队列一个线程写入了数据就必须得有一个线程取否则不能再继续添加用于传递性的场景 LinkedTransferQueue底层是一个链表无界阻塞队列。亮点是其有预占模式其消费者线程取元素时若队列为空就生成一个元素为null的节点入队消费者线程就等待在这个节点上后续生产者线程来了发现有个元素为null的节点就不再入队直接把数据填充给这个null节点并唤醒改null节点上等待的消费者线程取走元素 LinkedBlockingDeque底层是一个链表双向阻塞队列可以从队列的两端插入和移除元素 3、 阻塞队列的四组核心方法 插入相关的有add、offer、put移除相关的有remove、poll、take检查相关的有element、peek 按照队列空或者队列满时的表现可分为以下四组 以列为单位来看以上表格的含义 抛出异常列插入、移除、检查对应三个方法add、remove、element这一组是队列满或空时再调就抛出异常特殊值列插入、移除、检查对应三个方法offer、poll、peek这一组是队列满时调offer插入返回false而不是抛异常阻塞列插入、移除对应两个方法put、take这一组是队列满时再调put就一直阻塞直到put成功take同理超时列插入、移除对应两个方法offer、poll这一组是队列满时再调offer来放数据会阻塞但有个最大时间超过这个时间生产者线程就自动退出 //创建阻塞队列 BlockingQueueInteger blockingQueue new ArrayBlockingQueue(3); //写 for (int i 0; i 4; i) {blockingQueue.add(i); }抛异常 4、Demo 创建一个阻塞队列开两个线程分别对这个队列进行写个读采用上面阻塞列的那一组方法演示下生产消费者模式 public class BlockQueueDemo {public static void main(String[] args) throws InterruptedException {//创建阻塞队列BlockingQueueInteger blockingQueue new ArrayBlockingQueue(3);//生产者线程new Thread(() - {for (int i 0; i 10; i) {try {blockingQueue.put(i);System.out.println(Thread.currentThread().getName() 线程写数据成功 i);} catch (InterruptedException e) {e.printStackTrace();}}}).start();//消费者线程new Thread(() - {for (int i 0; i 10; i) {try {//每次取之前歇3秒模拟生产快消费慢的场景TimeUnit.SECONDS.sleep(3);Integer takeValue blockingQueue.take();System.out.println(Thread.currentThread().getName() 线程取数据成功 takeValue);} catch (InterruptedException e) {e.printStackTrace();}}}).start();} } 可以看到刚开始写线程可以写3个数据到阻塞队列然后挂起等消费线程取走一个则可再写一个此时消费慢阻塞队列满了生产线程再次自动挂起进入阻塞。 关于阻塞队列的具体应用 线程池下篇整理。 API文档https://tool.oschina.net/apidocs/apidoc?apijdk-zh
http://www.pierceye.com/news/543752/

相关文章:

  • 做别人一摸一样的网站犯法吗买一个网站多少钱
  • 网站建设介绍书网站转换率
  • 云浮各类免费建站商业街网站建设方案
  • 注册网站怎么注册不了网站诊断示例
  • 打电话沟通做网站美食网页模板免费下载
  • 网站可以做库存吗表白网页在线生成网站
  • wordpress全站301网络设计项目
  • 新建网站二级网页怎么做手机建行网站
  • 手机编辑WordPress博客唐山seo推广公司
  • 网站建设祥云平台高明网站设计案例
  • 做网站比较大的公司黑客入侵网站怎么做
  • 汕头网站建设哪里找网站建设找哪家好
  • 怎么做公司的宣传网站免费优化
  • 网站数据库模板下载中牟网络推广公司
  • 营销型网站有什么特点域名解析错误无法上网
  • 手机网站可以做英文版本吗惠州网络科技有限公司
  • 温州专业手机网站制作多少钱wordpress类似头条主题
  • 怎么做一个论坛网站wordpress 注册邮箱验证失败
  • 一家公司做两个网站百度四川营销中心
  • 网站群 主要功能如何自己创建网页
  • 大量增加告权重网站友链回提升网站权重吗官方网站下载地址
  • 哪家做网站的好google 网站营销
  • jsp网站 iisasp.net做的音乐网站
  • 网站特效怎么做的常州网站建设报价
  • 网站漂浮窗口代码麻涌东莞网站建设
  • icp许可证对网站的要求怎么不用wordpress
  • 四平市城市建设档案馆网站山东省建设业协会网站
  • js网站访问计数ui网上接单网站
  • 西安优秀高端网站建设服务商国外网站阻止国内访问怎么做
  • 招生型网站建设不用js做网站