栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

线程池分析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

线程池分析

JDK1.5推出线程池,线程池底层构造方法

ThreadPoolExecutor(int corePoolSize, 核心线程数
                   int maximumPoolSize, 最大线程数
                   long keepAliveTime,存活时间
                   TimeUnit unit,存活单位
                   BlockingQueue workQueue 等待队列
                   RejectedExecutionHandler handler 拒绝策略
                   ) {
newCachedThreadPool
public static ExecutorService newCachedThreadPool() {
    return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
                                  60L, TimeUnit.SECONDS,
                                  new SynchronousQueue()(同步队列));
}

不推荐使用原因:有多少任务,就会创建多少非核心线程执行任务,会造成CPU100%
remark1:如果线程执行的速度大于线程提交的速度,会出现线程复用
newFixedThreadPool
public static ExecutorService newFixedThreadPool(int nThreads) {
    return new ThreadPoolExecutor(nThreads, nThreads,
                                  0L, TimeUnit.MILLISECONDS,
                                  new linkedBlockingQueue()(无界队列));
}
不推荐使用原因:有多少任务,就会创建多少无界队列节点,可能会造成OOM
newSingleThreadExecutor
public static ExecutorService newSingleThreadExecutor() {
    return new FinalizableDelegatedExecutorService
        (new ThreadPoolExecutor(1, 1,
                                0L, TimeUnit.MILLISECONDS,
                                new linkedBlockingQueue()));
                              
}
不推荐使用原因:有多少任务,就会创建多少无界队列节点,可能会造成OOM

以上均不推荐使用,推荐自定义线程池

ThreadPoolExecutor poolExecutor = new ThreadPoolExecutor(10, 20, 0, TimeUnit.MILLISECONDS, new SynchronousQueue());
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/362409.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号