J.U.C关于Execute实现

复制代码
JAVASE5的Execute将为你管理Thread对象,是启动任务的优选方案

/**
*
newCachedThreadPool
在程序的执行过程中通常会创建于所需任务相同数量的线程即可以达到Integer.Max_values量 固使用不当容易引起内存溢出
*/
ExecutorService executorService = Executors.newCachedThreadPool();
public static ExecutorService newCachedThreadPool() {
return new ThreadPoolExecutor(0, Integer.MAX_VALUE,60L, TimeUnit.SECONDS,new SynchronousQueue<Runnable>()); }
==========================
newFixedThreadPool==============================================
/**
*创建指定线程数的线程;
此方法阻塞队列的容量没有限制;允许请求的队列长度为Integer.MAX_VALUE,可能会堆积大量请求,造成OOM
*/
ExecutorService executorService = Executors.newFixedThreadPool(2);// 有限线程数队列
public static ExecutorService newFixedThreadPool(int nThreads) 
{ 
    return new ThreadPoolExecutor(nThreads, nThreads, 19 20 0L, TimeUnit.MILLISECONDS,  new LinkedBlockingQueue<Runnable>()); 
}

public
LinkedBlockingQueue(){
this(Integer.MAX_VALUE);//创建指定容量的链表队列
}

===============================newSingleThreadExecutor==============================

/**

*线程数量为1的FixedThreadPool 每个任务将进入队列直到上一个任务处理完成,使用同一个线程处理<br>

LinkedBlockingQueue队列实现也是队列长度为Integer.MAX_VALUE所以也容易引起堆积大量请求,造成OOM

 

*/

  ExecutorService executorService = Executors.newSingleThreadExecutor();


public static ExecutorService newSingleThreadExecutor() {

return new FinalizableDelegatedExecutorService (new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()));
}
复制代码

 

posted @   陶朱公Boy  阅读(155)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2017-06-25 JVM个人总结一
点击右上角即可分享
微信分享提示