线程池中阻塞队列的作用:

  1. ⼀般的队列只能保证作为⼀个有限⻓度的缓冲区,如果超出了缓冲⻓度,就⽆法保留当前的任务了,阻塞队列通过阻塞可以保留住当前想要继续⼊队的任务。
  2. 阻塞队列可以保证任务队列中没有任务时阻塞获取任务的线程,使得线程进⼊wait状态释放cpu资源。
  3. 阻塞队列⾃带阻塞和唤醒的功能,不需要额外处理,⽆任务执⾏时,线程池利⽤阻塞队列的take⽅法挂起,从⽽维持核⼼线程的存活、不⾄于⼀直占⽤cpu资源

为什么是先添加列队而不是先创建最大线程?

在创建新线程的时候,是要获取全局锁的,这个时候其它的就得阻塞,影响了整体效率

就好⽐⼀个企业⾥⾯有10个(core)正式⼯的名额,最多招10个正式⼯,要是任务超过正式⼯⼈数(task > core)的情况下,⼯⼚领导(线程池)不是⾸先扩招⼯⼈,还是这10⼈,但是任务可以稍微积压⼀下,即先放到队列去(代价低)。10个正式⼯慢慢⼲,迟早会⼲完的,要是任务还在继续增加,超过正式⼯的加班忍耐极限了(队列满了),就的招外包帮忙了(注意是临时⼯)要是正式⼯加上外包还是不能完成任务,那新来的任务就会被领导拒绝了(线程池的拒绝策略)。

线程池中阻塞队列的作用?为什么是先添加列队而不是先创建最大线程?相关推荐

  1. 线程池中阻塞队列的作用?为什么是先添加列队而不是先创建最大线程?线程池中线程复用原理

    1.一般的队列只能保证作为一个有限长度的缓冲区,如果超出了缓冲长度,就无法保留当前的任务了,阻塞队列通过阻塞可以保留住当前想要继续入队的任务.阻塞队列可以保证任务队列中没有任务时阻塞获取任务的线程,使 ...

  2. 线程池中阻塞队列的作用?为什么是先添加列队而不是先 创建最大线程?

    1.一般的队列只能保证作为一个有限长度的缓冲区,如果超出了缓冲长度 ,就无法保留当前的任务 了,阻塞队列通过阻塞可以保留住当前想要继续入队的任务. 阻塞队列可以保证任务队列中没有任务时阻塞获取任务的线 ...

  3. 【无标题】线程池中阻塞队列的作用,为什么是先添加队列而不是先创建最大线程

  4. 为什么用线程池?解释下线程池参数?线程池处理流程?阻塞队列的作用?为什么是先添加列队而不是先创建最大线程?线程池中线程复用原理?

    为什么用线程池?解释下线程池参数? 1.降低资源消耗:提高线程利用率,降低创建和销毁线程的消耗. 2.提高响应速度:任务来了,直接有线程可用可执行,而不是先创建线程,再执行. 3.提高线程的可管理性: ...

  5. java线程池_Java多线程并发:线程基本方法+线程池原理+阻塞队列原理技术分享...

    线程基本方法有哪些? 线程相关的基本方法有 wait,notify,notifyAll,sleep,join,yield 等. 线程等待(wait) 调用该方法的线程进入 WAITING 状态,只有等 ...

  6. JAVA线程池_并发队列工作笔记0002---认识线程池_在线程池中使用队列

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 上面是线程的执行周期 这个线程的生命周期,可以看到时间都浪费在了创建和销毁的这里了. 实际上执行业 ...

  7. Java线程池和阻塞队列

    一.Java线程池的优点 1.降低资源消耗:通过重复利用线程池中已创建好的线程来降低线程创建和销毁造成的消耗. 2.提高响应速度:当任务到达时,任务可以直接拿到线程池中已创建好的线程立即执行. 3.提 ...

  8. 0.9.2、线程池——核心线程数、阻塞队列、最大线程数之间的关系

    文章目录 线程池内部运行过程 验证思路 确保先提交的任务优先被线程池处理 确保执行的任务占有足够久的线程池资源 可观测的阻塞队列大小 充分的信息 代码 自定义线程池 结果 结论 基本几结论 新任务提交 ...

  9. Java 线程池原理和队列详解

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/51701508 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的 ...

最新文章

  1. python安装包_在python官网打不开的情况下获取获取官方最新安装包
  2. 武汉加油!总有那么一个声音让我们感动,总有那些英雄在为难时刻挺身而出,像英雄们致敬。陈老师《大国风范》演讲视频...
  3. centos7 python3.7 ssl_centos6.8安装python3.7无法import _ssl的解决方法
  4. 微众WeCross 跨链平台(5)“UBI通用区块链接口”设计
  5. Oracle中的序列 sequence 用法
  6. 再见,2014;您好,2015!
  7. t’触发器真值表和状态方程_清写出触发器按逻辑特性的分类;写出T触发器的状态方程。...
  8. oracle p l,使用P.A.L制作便携软件 (一) 基本原理 | 么么哒拥有者
  9. android白色字体代码,Android实现状态栏白底黑字效果示例代码
  10. linux快速删除大文件rsync,(总结)Linux下使用rsync最快速删除海量文件的方法
  11. 计算机毕业设计的代码会查重吗,一般毕业论文会查重代码吗?
  12. 基于ATmega16单片机 程控滤波器程序源代码
  13. 考研数学模拟题要选哪个当真题做
  14. 互联网金融系统技术沙龙:小米风控实践
  15. %02x与%2x 之间的区别
  16. Keil5改黑色炫酷背景
  17. (开源)一款可以发文字发图片的实时聊天微信小程序,可以滚动内容到底部
  18. PHP语言系列API接口,按关键词搜索商品列表
  19. Flutter-防京东商城项目-提交订单、去支付页面制作-44
  20. oracle数据库方案模式,Oracle数据库技术服务方案.doc

热门文章

  1. jmockit 覆盖率配置
  2. 数据结构 - 十字链表之稀疏矩阵的存储
  3. 域名解析文件异常如何解决?
  4. python数据库去重复_mysql数据库如何去重复数据
  5. 耳朵白鲸沙龙《新媒体编辑如何打造轻量级爆品?》
  6. 阿里巴巴开发手册“泰山”版它来了,1.4.0+终极版+阿里内部PPT
  7. 深度学习论文导航 | 07 PANet:用于实例分割的路径聚合网络
  8. 实例分割--(PANet)Path Aggregation Network for Instance Segmentation
  9. CCF(管道清洁):最小费用最大流
  10. SLAM十四讲-个人总结