1、一般的队列只能保证作为一个有限长度的缓冲区,如果超出了缓冲长度,就无法保留当前的任务了,阻塞队列通过阻塞可以保留住当前想要继续入队的任务。阻塞队列可以保证任务队列中没有任务时阻塞获取任务的线程,使得线程进入wait状态,释放cpu资源。阻塞队列自带阻塞和唤醒的功能,不需要额外处理,无任务执行时,线程池利用阻塞队列的take方法挂起,从而维持核心线程的存活、不至于一直占用cpu资源

2、在创建新线程的时候,是要获取全局锁的,这个时候其它的就得阻塞,影响了整体效率就好比一个饭店里面有10个(core)正式工的名额,最多招10个正式工,要是任务超过正式工人数(task>core)的情况下,工厂领导(线程池)不是首先扩招工人,还是这10人,但是任务可以稍微积压一下,即先放到队列去(代价低) 。10个正式工慢慢干,迟早会千完的,要是任务还在继续增加,超过正式工的加班忍耐极限了(队列满了) ,就的招外包帮忙了(注意是临时工)要是正式工加上外包还是不能完成任务,那新来的任务就会被领导拒绝了(线程池的拒绝策略)

线程池中线程复用原理

线程池将线程和任务进行解耦,线程是线程,任务是任务,摆脱了之前通过Thread创建线程时的一个线程必须对应一个任务的限制。在线程池中,同一个线程可以从阻塞队列中不断获取新任务来执行,其核心原理在于线程池对Thread进行了封装,并不是每次执行任务都会调用Thread.start()来创建新线程,而是让每个线程去执行一个"循环任务",在这个"循环任务"中不停检查是否有任务需要被执行,如果有则直接执行,也就是调用任务中的run方法,将run方法当成一个普通的方法执行,通过这种方式只使用固定的线程就将所有任务的run方法串联起来。

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

  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. 性能超越GPU、FPGA,华人学者提出软件算法架构加速AI实时化
  2. 全球及中国印刷行业发展形势与十四五应用前景分析报告2022版
  3. 人民的名义中,为什么蔡成功的贷款这么难?
  4. 【我所认知的BIOS】— uEFI AHCI Driver(8) — Pci.Read()
  5. JQuery 对表单进行初始化操作
  6. 程序员使用未经批准的软件时会怎么样?
  7. u盘最大单个文件支持多少g_小身材用处大,金属U盘功能不简单
  8. 双系统下Ubuntu安装教程
  9. 深入理解 RecyclerView 系列之:ItemDecoration
  10. Mongod 芒果数据库初学.
  11. sd卡驱动 android,sd卡驱动异常怎么办 sd卡驱动程序无法使用【详解】
  12. Expandable实现方法
  13. 三阶魔方还原步骤图_魔方小站三阶魔方盲拧视频教程 (蒙眼拧魔方教程|还原公式图解|3D动画)...
  14. AI 隐身术,能让物体在视频中消失的魔法
  15. Ansys Lumerical | 铌酸锂热调制波导仿真
  16. 【BZOJ4027】【HEOI2015】兔子与樱花 贪心
  17. ES 根据查询条件求和sum
  18. java opencv 去噪,opencv教程-图像去噪与修复
  19. 火狐浏览器CSS兼容的解决方法~
  20. 智能手机是如何迭代的?消除鱼龙混杂珠虐待

热门文章

  1. POJ2391(最大流Isap+Floyd+二分)
  2. AIX系统CPU性能评估-1
  3. 网络中常见的互通与不通—Vecloud微云
  4. 搞不懂SDN和SD-WAN?那是因为你没看这个小故事—Vecloud微云
  5. SD-WAN如何简化企业网络并节省资金
  6. 使用Poco实现插件方式加载动态库
  7. IplImage和Mat间的相互转换
  8. 《JAVA程序设计》第八周学习总结
  9. 整理前端css/js/jq常见问题及解决方法(3)
  10. 软件工程师怎样减轻工作过程中遇到的压力