第 5-3 课:线程池——Executors + 面试题
线程池的创建分为两种方式: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 + 面试题相关推荐
- java线程池面试题有哪些?java线程池常见面试题
进行java面试的过程中,java线程池是必问的面试题目,因为这是java的重点知识,也是在java工作中经常会遇到的,那java线程池面试题有哪些?下面来我们就来给大家讲解一下java线程池常见面试 ...
- Java自带的线程池Executors.newFixedThreadPool
线程池的基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理.当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创建线程 ...
- 第 5-2 课:线程池——ThreadPoolExecutor + 面试题
线程池介绍 线程池(Thread Pool):把一个或多个线程通过统一的方式进行调度和重复使用的技术,避免了因为线程过多而带来使用上的开销. 为什么要使用线程池? 可重复使用已有线程,避免对象创建.消 ...
- java 批量插入clob_SpringBoot系列(16)线程池Executors并发编程之批量查询-插入数据
在上篇文章中Debug给大家分享介绍了"Java线程池-多线程的其中一种应用场景~广播式给所有有效用户发送邮件(通知)",本篇文章我们将继续向前迈进,继续介绍并实战"线程 ...
- 线程池Executors.newFixedThreadPool验证以及总结
1.Executors在于java.util.comcurrent.包下,Executors.newFixedThreadPool(n)创建容器大小为n的线程池,表示正在执行中的线程只有n个, 实践代 ...
- java executors 详解_线程池—Executors 详解
各位志同道合的朋友们大家好,我是一个一直在一线互联网踩坑十余年的编码爱好者,现在将我们的各种经验以及架构实战分享出来,如果大家喜欢,就关注我,一起将技术学深学透,我会每一篇分享结束都会预告下一专题 线 ...
- java executors 详解_线程池Executors详解
为什么要用线程池呢? 一是减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务; 二是可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为因为消耗过多的内存,而把服务器累 ...
- 线程池Executors.newFixedThreadPool
转载至::. https://blog.csdn.net/bobo8945510/article/details/52135076 Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池 ...
- 线程+线程池【面试题】
目录 什么进程和线程? 线程不安全的类有那些? 创建线程的几种方式? Thread中的start和run有什么区别? Thread和Runnable的区别和联系? 拓展问题:Java为什么是单继承和多 ...
最新文章
- 数据分析师的职业规划之路
- jPA自动创建数据库表的一些配置
- android-support-v4.jar 免积分下载
- python推荐系统-基于Python的推荐系统的设计与实现
- 计算机专业2016高考录取分数线,中国科学院大学计算机科学与技术专业2016年在江苏理科高考录取最低分数线...
- .Net开发中的多线程编程总结
- Tomcat容器、JSP和Servlet
- github文件上传全流程-新手入门系列
- 怎么用js实现jq的removeClass方法
- linux 核显驱动程序,支持下代核显 Intel放出Linux图形驱动
- NOIP模拟测试11「string·matrix·big」
- springmvc log4j配置
- SpringBoot总结之浅析自动化配置原理
- MySQL数据库基础命令
- 腾讯广点通DMP广告数据提交回传对接方法解析
- Java物流成本计算器
- 网易微专业 前端工程师 学习笔记
- 阿里云认证有用吗?阿里云证书含金量及如何获得
- 【Android工具】更新观影渠道,安卓、iOS、PC三端通用,免费电影在线观看
- html 设置min height,CSS中min-height使用技巧
热门文章
- python logging模块的作用及应用场景_Python常用模块功能简介(三)logging
- pdf python定位_如何使用PyPDF2获取PDF定位
- java电子通讯录毕业设计_(C)JAVA001电子通讯录(带系统托盘)
- LDAP命令介绍---dsreplication
- BUAA 436 孟竹的复习计划(二维树状数组)
- 人生中最【无用】的二十件事
- Linux使用jstat命令查看jvm的GC情况
- iptables 状态策略 允许内网连接外网 拒绝外网主动连入内网 _ 笔记
- Ant 风格路径表达式
- 第一个Android工程HelloAndroid