不推荐使用executors创建线程池_创建线程池的几种方式

不推荐使用executors创建线程池_创建线程池的几种方式 java中线程池的创建除了使用ThreadPoolExecutor之外,还可以使用Executors的静态方法来获取不同的线程池。Executors类 Executors利用工厂模式向我们提供了4种线程池静态实现方式。创建无大小限制的线程池publicstaticExecutorServicenewCachedThreadPool(){return…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

 java中线程池的创建除了使用ThreadPoolExecutor之外,还可以使用Executors的静态方法来获取不同的线程池。

Executors类

 Executors利用工厂模式向我们提供了4种线程池静态实现方式。

  • 创建无大小限制的线程池
public static ExecutorService newCachedThreadPool() {
    return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
                        60L, TimeUnit.SECONDS,
                        new SynchronousQueue<Runnable>());
    }
  • 创建固定大小的线程池
public static ExecutorService newFixedThreadPool(int nThreads) {
        return new ThreadPoolExecutor(nThreads, nThreads,
                                      0L, TimeUnit.MILLISECONDS,
                                      new LinkedBlockingQueue<Runnable>());
    }
  • 单线程池
public static ExecutorService newSingleThreadExecutor() {
        return new FinalizableDelegatedExecutorService
            (new ThreadPoolExecutor(1, 1,
                                    0L, TimeUnit.MILLISECONDS,
                                    new LinkedBlockingQueue<Runnable>()));
    }
  • 创建定时调度池
// 开启定时调度池
public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize) {
        return new ScheduledThreadPoolExecutor(corePoolSize);  
    }

/** * 使用ScheduledThreadPoolExecutor的该方法设置参数 * @param command 要承担的线程任务 * @param initialDelay 入池的线程开启的时间(从入池开始计时) * @param period 线程再一次启动时间 * @param unit period的单位 **/
public ScheduledFuture<?> scheduleAtFixedRate(Runnable command,
                                                  long initialDelay,
                                                  long period,
                                                  TimeUnit unit);

 通过使用以上四种静态方法,基本可以实现日程中对线程池的需求但是并不推荐使用,原因是使用Executors创建线程池不会传入线程池具体参数而是使用默认值所以我们常常忽略这些参数,从上面的源码中我们可以看到,Executors的静态方法实际上还是调用的ThreadPoolExecutor来创建线程池,只不过,它将绝大多数参数用默认值代替,而只给我们留下了关心的个别参数。

 最近阿里发布的 Java开发手册中强制线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/188531.html原文链接:https://javaforall.net

(0)
上一篇 2026年4月16日 下午12:22
下一篇 2026年4月16日 下午12:28


相关推荐

  • vs python生成exe文件_使用VScode编写python程序并打包成.exe文件

    vs python生成exe文件_使用VScode编写python程序并打包成.exe文件据说VisualStudioCode(VSCode)的诸多好处,了解了一下果然很喜欢,我喜欢它的原因主要有3个,一是VSCode开源且跨平台,二是因为其界面非常酷,三是可以满足我的大所属代码需求,除此之外当然还有强大的好奇心。使用VScode编写第一个Python程序“one.py”,并将其打包成.exe文件。演示使用的程序版本:python36,VScode1.27.1,pyinstal…

    2022年5月15日
    61
  • eclipse android环境搭建,Eclipse Android开发环境搭建教程

    eclipse android环境搭建,Eclipse Android开发环境搭建教程EclipseAndroid开发环境搭建教程是本文要介绍的内容,主要是来了解并学习EclipseAndroid环境搭建的过程,具体关于EclipseAndroid内容的详解来看本文。EclipseAndroid开发准备:1、javasdk2、eclipsehttp://www.eclipse.org/downloads/3、android-sdk-windows安装好java环境和ecli…

    2022年7月23日
    9
  • 怎样学习工业PLC

    怎样学习工业PLC可编程控制器是集计算机技术、通讯技术、自动控制技术为一体的工业控制装置。对于初学者来说掌握了plc基本原理,熟悉常用的编程方法,在进行简单系统编程时尚可以运用自如,但对较为复杂的控制系统设计往往力不从心,要想在PLC应用方面得心应手,学习者除了要建立正确的学习方法,深入学习plc编程技巧,最重要的是相关知识的学习。下面从六个方面谈谈我的教学心得。一、多收集程序范例、增加编程经验在PLC的编程方…

    2022年10月18日
    5
  • 深入实践:在n8n中集成playwright-mcp实现自动化浏览器操控

    深入实践:在n8n中集成playwright-mcp实现自动化浏览器操控

    2026年3月16日
    3
  • document.all用法「建议收藏」

    document.all用法「建议收藏」document.all用法第一:document.all是页面内所有元素的一个集合。例如:document.all(0)表示页面内第一个元素第二:document.all可以判断浏览器是否

    2022年7月4日
    21
  • 大事件,Java被超越了,2021年5月TIOBE编程语言排行榜出炉

    大事件,Java被超越了,2021年5月TIOBE编程语言排行榜出炉TIOBE头条TIOBE5月编程语言排行榜新鲜出炉。前十榜单中,C、Python、Java三大鳌头仍占据前三榜单。去年11月,Python短时间的挤掉Java跃居至榜单第二名;今年5月,Python再次挤掉Java,再度夺下榜二。TIOBE排行榜是世界上权威编程语言排行榜,注意,它只是反映某个编程语言的热门程度,并不能说明一门编程语言好不好,毕竟术业有专攻。TIOBE开发语言排行榜每月更新一次,其结果作为当前业内程序开发语言的流行使用程度的有效指标。该指数可以用来检阅开发者的编程技能能否跟上趋势,

    2025年8月8日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号