博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java并发包中线程池的种类和特点介绍
阅读量:6942 次
发布时间:2019-06-27

本文共 930 字,大约阅读时间需要 3 分钟。

Java并发包提供了包括原子量、并发集合、同步器、可重入锁、线程池等强大工具这里学习一下线程池的种类和特性介绍。

如果每项任务都分配一个线程,当任务特别多的时候,可能会超出系统承载能力。而且线程的创建和销毁是非常耗费资源的操作。如果我们在系统启动时就维持几个固定的线程,如果有新的任务到来就分配这些线程来执行操作,当操作完成后继续等待新的任务到来,这样我们就有了一个线程池。

 

通常开发者都是利用Executors提供的通用线程池创建方法,去创建不同配置的线程池,主要区别在于ExecutorService类型或者不同的初始参数,Executors目前提供了五种不同的线程池创建配置

①newCachedThreaPool(),它是一种用来处理大量短时间工作任务的线程池,具有几个鲜明特点:它会试图缓存线程并重用,当无缓村线程可重用时,就会创建新的工作线程;如果线程闲置的时间超过60秒,则被终止并移出缓存;长时间闲置时,这种线程池并不会消耗什么资源,其内部使用SynchronousQueue作为工作队列

 

②newFixedThreadPool(), 拥有固定线程数的线程池,背后使用的是无界的工作队列,可以通过参数设置线程池的大小,可以随意设置,也可以和cpu的核数量保持一致,获取cpu的核数int cpuNums=Runtime.getRuntime().availableProcessors();

 

③newSingleThreadExecutor(),它的特点在于工作线程数目被限制为1,因此所有提交的任务是顺序执行

 

④newSingleThreadScheduledExcutor()和newScheduleThreadPool(int corePoolSize),可以定时或者周期性的工作调度,区别在单一工作线程还是多个工作线程

 

⑤newWorkStealingPool(int parallelism),Java8才加入这个创建方法,其内部会构建ForkJoinPool,利用Work-Stealing算法,并行的处理任务,不保证处理顺序

转载于:https://www.cnblogs.com/baxianhua/p/9442848.html

你可能感兴趣的文章
刷题常用的STL容器总结
查看>>
sdut 1451 括号东东 (dp或模拟)
查看>>
POJ1002 487-3279
查看>>
Appium 在 Android UI 测试中的应用
查看>>
登录界面 动画背景效果
查看>>
DEV 第三方控件报表分类汇总
查看>>
DLL技术应用03 - 零基础入门学习Delphi46
查看>>
多维数组元素的地址
查看>>
动态内存管理 - C++快速入门33
查看>>
c#.net中引入ConfigurationManager报错
查看>>
2013应届毕业生“PPS”校招应聘总结
查看>>
CentOS 7 启动VNC失败问题
查看>>
微软职位内部推荐-This Job is no longer available.
查看>>
abbyy在使用时提示更改分辨率如何处理
查看>>
vagrant教程
查看>>
左右手坐标系与旋转正向
查看>>
hdu 2177 取(2堆)石子游戏(威佐夫博奕)
查看>>
AndroidPn服务端部分bug解决方案
查看>>
LeetCode – Refresh – LRU
查看>>
[leetcode] Subsets II
查看>>