线程池的创建分为两种方式:ThreadPoolExecutor 和 Executors,上一节学习了 ThreadPoolExecutor 的使用方式,本节重点来看 Executors 是如何创建线程池的。
Executors 可以创建以下六种线程池。

  • FixedThreadPool(n):创建一个数量固定的线程池,超出的任务会在队列中等待空闲的线程,可用于控制程序的最大并发数。
  • CachedThreadPool():短时间内处理大量工作的线程池,会根据任务数量产生对应的线程,并试图缓存线程以便重复使用,如果限制 60 秒没被使用,则会被移除缓存。
  • SingleThreadExecutor():创建一个单线程线程池。
  • ScheduledThreadPool(n):创建一个数量固定的线程池,支持执行定时性或周期性任务。
  • SingleThreadScheduledExecutor():此线程池就是单线程的 newScheduledThreadPool。
  • WorkStealingPool(n):Java 8 新增创建线程池的方法,创建时如果不设置任何参数,则以当前机器处理器个数作为线程个数,此线程池会并行处理任务,不能保证执行顺序。

下面分别来看以上六种线程池的具体代码使用。

FixedThreadPool 使用

创建固定个数的线程池,具体示例如下:

ExecutorService fixedThreadPool = Executors.newFixedThreadPool(2);
for (int i = 0; i < 3; i++) {fixedThreadPool.execute(() -> {

第 5-3 课:线程池——Executors + 面试题相关推荐

  1. java线程池面试题有哪些?java线程池常见面试题

    进行java面试的过程中,java线程池是必问的面试题目,因为这是java的重点知识,也是在java工作中经常会遇到的,那java线程池面试题有哪些?下面来我们就来给大家讲解一下java线程池常见面试 ...

  2. Java自带的线程池Executors.newFixedThreadPool

    线程池的基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理.当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创建线程 ...

  3. 第 5-2 课:线程池——ThreadPoolExecutor + 面试题

    线程池介绍 线程池(Thread Pool):把一个或多个线程通过统一的方式进行调度和重复使用的技术,避免了因为线程过多而带来使用上的开销. 为什么要使用线程池? 可重复使用已有线程,避免对象创建.消 ...

  4. java 批量插入clob_SpringBoot系列(16)线程池Executors并发编程之批量查询-插入数据

    在上篇文章中Debug给大家分享介绍了"Java线程池-多线程的其中一种应用场景~广播式给所有有效用户发送邮件(通知)",本篇文章我们将继续向前迈进,继续介绍并实战"线程 ...

  5. 线程池Executors.newFixedThreadPool验证以及总结

    1.Executors在于java.util.comcurrent.包下,Executors.newFixedThreadPool(n)创建容器大小为n的线程池,表示正在执行中的线程只有n个, 实践代 ...

  6. java executors 详解_线程池—Executors 详解

    各位志同道合的朋友们大家好,我是一个一直在一线互联网踩坑十余年的编码爱好者,现在将我们的各种经验以及架构实战分享出来,如果大家喜欢,就关注我,一起将技术学深学透,我会每一篇分享结束都会预告下一专题 线 ...

  7. java executors 详解_线程池Executors详解

    为什么要用线程池呢? 一是减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务; 二是可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为因为消耗过多的内存,而把服务器累 ...

  8. 线程池Executors.newFixedThreadPool

    转载至::. https://blog.csdn.net/bobo8945510/article/details/52135076 Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池 ...

  9. 线程+线程池【面试题】

    目录 什么进程和线程? 线程不安全的类有那些? 创建线程的几种方式? Thread中的start和run有什么区别? Thread和Runnable的区别和联系? 拓展问题:Java为什么是单继承和多 ...

最新文章

  1. 数据分析师的职业规划之路
  2. jPA自动创建数据库表的一些配置
  3. android-support-v4.jar 免积分下载
  4. python推荐系统-基于Python的推荐系统的设计与实现
  5. 计算机专业2016高考录取分数线,中国科学院大学计算机科学与技术专业2016年在江苏理科高考录取最低分数线...
  6. .Net开发中的多线程编程总结
  7. Tomcat容器、JSP和Servlet
  8. github文件上传全流程-新手入门系列
  9. 怎么用js实现jq的removeClass方法
  10. linux 核显驱动程序,支持下代核显 Intel放出Linux图形驱动
  11. NOIP模拟测试11「string·matrix·big」
  12. springmvc log4j配置
  13. SpringBoot总结之浅析自动化配置原理
  14. MySQL数据库基础命令
  15. 腾讯广点通DMP广告数据提交回传对接方法解析
  16. Java物流成本计算器
  17. 网易微专业 前端工程师 学习笔记
  18. 阿里云认证有用吗?阿里云证书含金量及如何获得
  19. 【Android工具】更新观影渠道,安卓、iOS、PC三端通用,免费电影在线观看
  20. html 设置min height,CSS中min-height使用技巧

热门文章

  1. python logging模块的作用及应用场景_Python常用模块功能简介(三)logging
  2. pdf python定位_如何使用PyPDF2获取PDF定位
  3. java电子通讯录毕业设计_(C)JAVA001电子通讯录(带系统托盘)
  4. LDAP命令介绍---dsreplication
  5. BUAA 436 孟竹的复习计划(二维树状数组)
  6. 人生中最【无用】的二十件事
  7. Linux使用jstat命令查看jvm的GC情况
  8. iptables 状态策略 允许内网连接外网 拒绝外网主动连入内网 _ 笔记
  9. Ant 风格路径表达式
  10. 第一个Android工程HelloAndroid