大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
一、工作中使用线程池的好处:
1.降低资源消耗,线程的创建和消耗是非常消耗资源的,使用线程池可以避免线程的频繁创建和消耗,从而降低资源消耗。
2.提高响应速度,当请求到达时,线程池可以为请求直接分配一个线程,因此就不用等待线程创建就可以立即执行。
3.线程池可以很好的管理线程。
二、java中有哪些常用的线程池(java.util.concurrent.Executors):
1.CachedThreadPool:可缓存线程池,它是一个可以无限扩大的线程池。
创建方法为:Executors.newCachThreadPool();
2.FixedThreadPool:固定线程池,即线程池中线程个数是固定的。
创建方法为:Executors.newFixedThreadPool(3);
3.SingleThreadExecutor:单线程线程池,即只创建一个工作线程来执行任务,单线程线程池最大的特点就是可以保证顺序执行各个任务。
创建方法为:Executors.newSingleThreadExecutcor();
4.ScheduleThreadPool:定长线程池,且支持定时及周期性任务。
创建方法为:Executors.newScheduleThreadPool(5);
三、这样创建线程池有什么问题:
上述线程池的创建方式,可能会导致OOM,例如:FixedThreadPool和SingelThreadPool允许的请求队列长度为:Integer.MAX_VALUE,这样可能堆积大量请求,导致OOM;而CachedThreadPool允许创建的线程数量为Integer.MAX_VALUE,这样可能创建大量的线程,导致OOM.。
所以建议通过ThreadPoolExecutor来创建线程池,方式如下:
new ThreadPoolExecutor(10,//核心线程数
20,//最大线程数
1L,//空闲线程存活时间
TimeUnit.MILLISECONDS,//空闲线程存活时间单位
new LinkedBlockingQueue(1024),//阻塞队列
new ThreadFactoryBuilder().setNameFormat(“demo-pool-%d”).build(),//线程工厂
new ThreadPoolExecutor.AbortPolicy());//拒绝策略
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/188308.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...