Java四种线程池的使用

FixedThreadPool

由Executors的newFixedThreadPool方法创建。它是一种线程数量固定的线程池,当线程处于空闲状态时,他们并不会被回收,除非线程池被关闭。当所有的线程都处于活动状态时,新的任务都会处于等待状态,直到有线程空闲出来。FixedThreadPool只有核心线程,且该核心线程都不会被回收,这意味着它可以更快地响应外界的请求。
FixedThreadPool没有额外线程,只存在核心线程,而且核心线程没有超时机制,而且任务队列没有长度的限制。

public class ThreadPoolExecutorTest {public static void main(String[] args) {ExecutorService fixedThreadPool =Executors. newFixedThreadPool(3);for (int i =1; i<=5;i++){final int index=i ;fixedThreadPool.execute(new Runnable(){@Overridepublic void run() {try {System.out.println("第" +index + "个线程" +Thread.currentThread().getName());Thread.sleep(1000);} catch(InterruptedException e ) {e .printStackTrace();}}});}}
}

CachedThreadPool

由Executors的newCachedThreadPool方法创建,不存在核心线程,只存在数量不定的非核心线程,而且其数量最大值为Integer.MAX_VALUE。当线程池中的线程都处于活动时(全满),线程池会创建新的线程来处理新的任务,否则就会利用新的线程来处理新的任务,线程池中的空闲线程都有超时机制,默认超时时长为60s,超过60s的空闲线程就会被回收。和FixedThreadPool不同的是,CachedThreadPool的任务队列其实相当于一个空的集合,这将导致任何任务都会被执行,因为在这种场景下SynchronousQueue是不能插入任务的,SynchronousQueue是一个特殊的队列,在很多情况下可以理解为一个无法储存元素的队列。从CachedThreadPool的特性看,这类线程比较适合执行大量耗时较小的任务。当整个线程池都处于闲置状态时,线程池中的线程都会因为超时而被停止回收,几乎是不占任何系统资源。

ScheduledThreadPool

通过Executors的newScheduledThreadPool方式创建,核心线程数量是固定的,而非核心线程是没有限制的,并且当非核心线程闲置时它会被立即回收,ScheduledThreadPool这类线程池主要用于执行定时任务和具有固定时期的重复任务。
延迟:

public class ThreadPoolExecutorTest {  public static void main(String[] args) {ScheduledExecutorService scheduledThreadPool= Executors.newScheduledThreadPool(3);   scheduledThreadPool.schedule(newRunnable(){     @Overridepublic void run() {System.out.println("延迟三秒");}}, 3, TimeUnit.SECONDS);}
}

定时:

public class ThreadPoolExecutorTest {  public static void main(String[] args) {ScheduledExecutorService scheduledThreadPool= Executors.newScheduledThreadPool(3);    scheduledThreadPool.scheduleAtFixedRate(newRunnable(){    @Override      public void run() {System.out.println("延迟1秒后每三秒执行一次");}},1,3,TimeUnit.SECONDS);}}

SingleThreadExecutor

通过Executors的newSingleThreadExecutor方法来创建。这类线程池内部只有一个核心线程,它确保所有的任务都在同一个线程中按顺序执行。SingleThreadExecutor的意义在于统一所有外界任务一个线程中,这使得这些任务之间不需要处理线程同步的问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280770.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

袁永福软件行业从业经历

简化版》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》 袁永福简历 袁永福&#xff0c;男&#xff0c;1980年生于江西省九江市都昌县&#xff0c;2001年南京东南大学动力工程系本科毕业。毕业后一直从事计算机软件开发工作&…

小程序之地图导航

同学们平常使用地图的时候应该都有注意到&#xff0c;当我们在一个应用中选择一个地址&#xff0c;打开一个地图&#xff0c;往往会有两种显示方式&#xff0c;一个是显示当前自己的位置&#xff1b;一个是显示对方&#xff0c;也就是目的地的位置&#xff1b;如下图&#xff1…

PS2019摄影后期处理(一)

高高手之路笔记 一、学习方法 内外兼修&#xff1a;技术会淘汰、更新&#xff0c;自己内在也要提高。 二、照片格式、色彩空间 JPEG TIFF RAW sRGB&#xff1a;互联网相关图片&#xff0c;电子设备 三、照片风格 自己定义照片格式&#xff0c;直接后期效果 相机自带工具&a…

mdnsresponder_什么是mDNSResponder.exe / Bonjour,如何卸载或删除它?

mdnsresponderYou are no doubt reading this article because you’ve noticed the mDNSResponder.exe process running in Task Manager, you don’t remember installing it, and it doesn’t show up in the Add/Remove programs in Control Panel. So what is it, and how…

Windows 10下,如何使用PowerShell批量重启局域网电脑

PowerShell 在Windows 10中越来越受到微软重视&#xff0c;甚至被微软安排在开始按钮超级菜单中替换了一直以来默认的命令提示符(当然还可以换回去)&#xff0c;这和该工具越来越强大密不可分。这次就介绍一个“群重启”命令&#xff0c;可让局域网内的电脑集体重启。1、单机重…

.NET MAUI学习指南

由于.NET MAUI这项技术出来不久相关的学习资源暂时除了官网以外没有太好的学习资源&#xff0c;这篇文章主要向大家分享几种学习.NET MAUI的学习途径&#xff0c;如果有好的学习资源欢迎大家私信给我然后更新到后续的文章里。&#xff08;以下推荐学习途径均为免费且无广告的资…

循序渐进DB2(第2版)——DBA系统管理、运维与应用案例

《循序渐进DB2(第2版)——DBA系统管理、运维与应用案例》基本信息作者&#xff1a; 牛新庄出版社&#xff1a;清华大学出版社ISBN&#xff1a;9787302323013上架时间&#xff1a;2013-7-3出版日期&#xff1a;2013 年7月开本&#xff1a;16开页码&#xff1a;612版次&#xff1…

PS2019摄影后期处理(二)

一、曲线 二、曲线与通道 三、HSL局部调整 色相、饱和度、亮度 a.色相&#xff1a;一个颜色&#xff0c;帽子是红色 b.饱和度&#xff1a;树木葱郁一点 c.饱和度&#xff1a;衣服连杆 便黑白&#xff1a; 1.调低所有饱和度 2.将某个颜色饱和度提高&#xff0c;再转灰度。…

管理员获得所有权_在Windows 7中获得注册表项的所有权

管理员获得所有权We have previously written about how to take ownership of files and folders in Windows 7, but there may be times when you need to take ownership of or assign full permission for certain registry keys. This article shows you how to do this. …

Dojo QuickStart 快速入门教程 (2) 基本框架

下载库 首先&#xff0c;下载 Dojo 库&#xff1a;http://www.dojotoolkit.org/downloads 放了方便测试&#xff0c;我将文件将解压到 Web Server 的 "js/dojotoolkit" 文件夹中&#xff0c;如果你愿意&#xff0c;也可以缀上版本号。最后的目录结构应该像下图这样&a…

摊牌了,.NET开发者,准备赋能未来

hi&#xff0c;这里是桑小榆。一名.net开发&#xff0c;从19年毕业至今一直从事相关技术已近4年。发展至今&#xff0c;很有必要分享分享我的经历以及对于.net开发的看法和见解。篇幅有些长&#xff0c;无论你是学生&#xff0c;职业人&#xff0c;.NET开发者还是其他语言开发者…

BZOJ 3434 时空穿梭

题目链接&#xff1a;http://www.lydsy.com/JudgeOnline/problem.php?id3434 题意&#xff1a; 思路&#xff1a; const int mod10007; const int N100005;int g[22][N]; int C[N][22],mou[N]; int h[22][N][13];int prime[N],cnt; int tag[N];void init() {int i,j;mou[1]1;f…

plex实现流媒体服务器_如何从Plex Media Server离线查看下载和同步媒体

plex实现流媒体服务器Streaming content from your Plex Media Server is great, but sometimes—like when you’re going to be offline or stuck with cruddy internet speeds while traveling—there’s no substitution for having a copy of the media stored on your de…

.NET Conf 2022 大会日程全曝光!!前沿、硬核、创意.....精彩就等你来!!

倒计时2天一场规模宏大&#xff0c;内容硬核&#xff0c;大咖齐聚的.NET 领域年度最大的盛会即将开幕.NET Conf 2022 12月3日-12月4日开源 安全 赋能诚邀您的加入立即扫码预约加入.NET年度盛宴&#xff01;&#xff01;.NET Conf China 2022.NET Conf China 2022是面向开发人员…

Linux下SSH远程连接断开后让程序继续运行解决办法

screen -S yourname #新建一个叫yourname的sessionscreen -r yourname #回到yourname这个sessionscreen -X -S [yourname # you want to kill]quit #删除无用的screen&#xff0c;使用时不用加中括号 screen -ls #列出当前所有的session screen -d yourname #远程detach某个ses…

wmi服务或wmi提供程序_什么是WMI提供程序主机(WmiPrvSE.exe),为什么使用那么多的CPU?...

wmi服务或wmi提供程序The WMI Provider Host process is an important part of Windows, and often runs in the background. It allows other applications on your computer to request information about your system. This process shouldn’t normally use many system re…

正在创建系统还原点_如何使Windows在启动时自动创建系统还原点

正在创建系统还原点By default, System Restore automatically creates a restore point once per week and also before major events like an app or driver installation. If you want even more protection, you can force Windows to create a restore point automaticall…

在ubuntu 16.04里使用python—scrapy将爬取到的数据存到mysql数据库中的一些随笔

一、将爬取的数据保存到mysql数据库的代码&#xff08;已经能将爬取的数据保存到json文件&#xff09; &#xff08;1&#xff09;编辑Pipeline.py文件 &#xff08;2&#xff09;编辑settings.py文件 二、将数据保存至mysql数据库出现的问题 &#xff08;1&#xff09;在将数据…

十大经典排序算法(动图演示)

转自&#xff1a;https://www.cnblogs.com/onepixel/articles/7674659.html 0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类&#xff1a; 非线性时间比较类排序&#xff1a;通过比较来决定元素间的相对次序&#xff0c;由于其时间复杂度不能突破O(nlogn)&#xff0c…

如何实现 WPF 视频封面查看器

如何实现 WPF 视频封面查看器控件名&#xff1a;NineGridView作 者&#xff1a;WPFDevelopersOrg - 驚鏵原文链接[1]&#xff1a;https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用.NET40&#xff1b;Visual Studio 2019;实现视频封面查看器NineGridView基于Grid实…