一、线程池结构图
二、示例
定义线程接口
public class MyThread extends Thread {
@Override
publicvoid run() {
System.out.println(Thread.currentThread().getName() + "正在执行");
}
}
1:newSingleThreadExecutor
ExecutorService pool = Executors. newSingleThreadExecutor(); Thread t1 = new MyThread(); Thread t2 = new MyThread(); Thread t3 = new MyThread(); //将线程放入池中进行执行 pool.execute(t1); pool.execute(t2); pool.execute(t3); //关闭线程池 pool.shutdown();
输入结果:
pool-1-thread-1正在执行 pool-1-thread-1正在执行 pool-1-thread-1正在执行
2:newFixedThreadPool
ExecutorService pool = Executors.newFixedThreadPool(3); Thread t1 = new MyThread(); Thread t2 = new MyThread(); Thread t3 = new MyThread(); Thread t4 = new MyThread(); Thread t5 = new MyThread(); //将线程放入池中进行执行 pool.execute(t1); pool.execute(t2); pool.execute(t3); pool.execute(t4); pool.execute(t5); pool.shutdown();
输入结果:
pool-1-thread-1正在执行 pool-1-thread-2正在执行 pool-1-thread-1正在执行 pool-1-thread-2正在执行
3 :newCachedThreadPool
ExecutorService pool = Executors.newCachedThreadPool(); Thread t1 = new MyThread(); Thread t2 = new MyThread(); Thread t3 = new MyThread(); Thread t4 = new MyThread(); Thread t5 = new MyThread(); //将线程放入池中进行执行 pool.execute(t1); pool.execute(t2); pool.execute(t3); pool.execute(t4); pool.execute(t5); //关闭线程池 pool.shutdown();
输入结果:
pool-1-thread-2正在执行 pool-1-thread-4正在执行 pool-1-thread-3正在执行 pool-1-thread-1正在执行 pool-1-thread-5正在执行
4 :ScheduledThreadPoolExecutor
ScheduledExecutorService pool = Executors.newScheduledThreadPool(2);
pool.scheduleAtFixedRate(new Runnable() {//每隔一段时间就触发异常
@Override
public void run() {
//throw new RuntimeException();
System.out.println("================");
}
}, 1000, 2000, TimeUnit.MILLISECONDS);
pool.scheduleAtFixedRate(new Runnable() {//每隔一段时间打印系统时间,证明两者是互不影响的
@Override
public void run() {
System.out.println("+++++++++++++++++");
}
}, 1000, 2000, TimeUnit.MILLISECONDS);
输入结果:
================ +++++++++++++++++ +++++++++++++++++ +++++++++++++++++
三、线程池核心参数
corePoolSize : 池中核心的线程数
maximumPoolSize : 池中允许的最大线程数。
keepAliveTime : 当线程数大于核心时,此为终止前多余的空闲线程等待新任务的最长时间。
unit : keepAliveTime 参数的时间单位。
workQueue : 执行前用于保持任务的队列。此队列仅保持由 execute方法提交的 Runnable任务。
threadFactory : 执行程序创建新线程时使用的工厂。
handler : 由于超出线程范围和队列容量而使执行被阻塞时所使用的处理程序。
ThreadPoolExecutor :Executors类的底层实现。
3.1 任务排队机制
SynchonousQueue: 同步队列,队列直接提交给线程执行而不保持它们,此时线程池通常是无界的
LinkedBlockingQueue: 无界对列,当线程池线程数达到最大数量时,新任务就会在队列中等待执行,可能会造成队列无限膨胀
ArrayBlockingQueue : 有界队列,有助于防止资源耗尽,一旦达到上限,可能会造成新任务丢失
注意:
newSingleThreadExecutor、newFixedThreadPool使用的是LinkedBlockingQueue
newCachedThreadPool 使用的是 SynchonousQueue
newScheduledThreadPool使用的是 DelayedWorkQueue
3.2 线程执行流程
3.3 线程大小确定:
cpu密集型: 尽量少开线程,最佳线程数 Ncpu+1
io密集型:多开线程,2Ncpu
混合型:根据情况而定,可以拆分成io密集和cou密集
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# Java
# 线程池
# 框架
# 详谈Java几种线程池类型介绍及使用方法
# Java 线程池原理深入分析
# Java 线程池详解及创建简单实例
# 浅谈java常用的几种线程池比较
# Java 定时器(Timer)及线程池里使用定时器实例代码
# Java 线程池详解及实例代码
# 四种Java线程池用法解析
# Java编程中线程池的基本概念和使用
# java基于线程池和反射机制实现定时任务完整实例
# java的线程池框架及线程池的原理
# 的是
# 池中
# 新任务
# 每隔
# 无界
# 结构图
# 会在
# 而不
# 而定
# 此为
# 尽量少
# 混合型
# newSingleThreadExecutor
相关文章:
制作公司内部网站有哪些,内网如何建网站?
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
如何高效生成建站之星成品网站源码?
C++中引用和指针有什么区别?(代码说明)
宝塔建站教程:一键部署配置流程与SEO优化实战指南
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
全景视频制作网站有哪些,全景图怎么做成网页?
如何在万网自助建站中设置域名及备案?
网站图片在线制作软件,怎么在图片上做链接?
表情包在线制作网站免费,表情包怎么弄?
广东企业建站网站优化与SEO营销核心策略指南
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
5种Android数据存储方式汇总
盘锦网站制作公司,盘锦大洼有多少5G网站?
建站主机核心功能解析:服务器选择与网站搭建流程指南
西安大型网站制作公司,西安招聘网站最好的是哪个?
制作网站怎么制作,*游戏网站怎么搭建?
建站之星代理如何优化在线客服效率?
营销式网站制作方案,销售哪个网站招聘效果最好?
无锡营销型网站制作公司,无锡网选车牌流程?
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
如何在云主机快速搭建网站站点?
建站之星如何防范黑客攻击与数据泄露?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
名字制作网站免费,所有小说网站的名字?
建站OpenVZ教程与优化策略:配置指南与性能提升
如何快速搭建支持数据库操作的智能建站平台?
如何批量查询域名的建站时间记录?
济南专业网站制作公司,济南信息工程学校怎么样?
制作销售网站教学视频,销售网站有哪些?
岳西云建站教程与模板下载_一站式快速建站系统操作指南
建站主机CVM配置优化、SEO策略与性能提升指南
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
建站之星24小时客服电话如何获取?
香港服务器选型指南:免备案配置与高效建站方案解析
建站主机助手选型指南:2025年热门推荐与高效部署技巧
如何快速搭建自助建站会员专属系统?
建站之星如何通过成品分离优化网站效率?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
建站之星免费版是否永久可用?
广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?
成都网站制作报价公司,成都工业用气开户费用?
如何通过远程VPS快速搭建个人网站?
如何在香港免费服务器上快速搭建网站?
建站之星代理平台如何选择最佳方案?
如何快速搭建高效简练网站?
北京建设网站制作公司,北京古代建筑博物馆预约官网?
*请认真填写需求信息,我们会在24小时内与您取得联系。