不推荐使用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Jenkins的详细安装及使用

    Jenkins的详细安装及使用操作环境:Windows一、环境准备1安装JDK&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;本文采用jdk-8u111-windows-x64.exe;2配置tomcat&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbs

    2022年5月28日
    69
  • 最新goland永久激活破解方法

    最新goland永久激活破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    81
  • ODS层设计规范_环境类别二类的保护层厚度是多少

    ODS层设计规范_环境类别二类的保护层厚度是多少ODS层设计规范更新时间:2021-06-0814:37我的收藏本页目录数据同步及处理规范 命名规范 数据存储及生命周期管理规范 数据质量规范本文为您介绍ODS层设计规范。数据同步及处理规范数据同步方式的选择 基本规范通过需求形式落地到DataWorks的数据集成,规范落地情况依赖工具的推进节奏。一个系统的源表只允许同步一次到MaxCompute。 数据加载与处理 通过一键实时同步至MaxCompute方案实现,请参见配置查看数据同步任务。 命名规范表命名

    2022年10月6日
    2
  • 根据前序遍历和中序遍历创建二叉树

    根据前序遍历和中序遍历创建二叉树Contents 前言四种遍历树的方法简介简介两种快速获得遍历结果的方法根据前序遍历和后续遍历创建树代码实现四种遍历树的方法的代码前言昨天参加了两场笔试 都考了这个题 第一场是根据 pre

    2025年10月22日
    2
  • 浅谈手机杀毒软件及手机病毒管理_防手机病毒杀毒软件

    浅谈手机杀毒软件及手机病毒管理_防手机病毒杀毒软件十一国庆长假刚过,又传出爆发手机病毒.到底有没有手机病毒??是手机杀毒软件公司的忽悠,还是真有手机病毒?很多资深IT人士都曾暴料,手机病毒是吹出来的根本不存在,因为智能手机操作系统都不相同,智能手机塞班、苹果OS、WM等平台的内部程序都是不对外公开的.纵使国内的山寨iphone外壳模仿得再像,但其内部的操作界面是无论如何做不出类似OS那样华丽的效果的;再有,各大手机系统都互不兼容,想要做到病毒

    2022年9月24日
    2
  • 初学者:html中的表单详解(下面附有代码)

    初学者:html中的表单详解(下面附有代码)表单的理解与解释表单:采集不同类型的用户输入数据,发送给服务器,实现用户和服务器之间的数据交互。表单标签form声明数据采集的范围,只要是在form中的,都是要采集的数据。一个页面中可以有多个form标签,只能是并列关系,不能嵌套。只能是兄弟关系,,不能是父子关系。用户向服务器端发送数据时,一次只能提交一个表单中的数据。如果要提交多个表单就需要用js中的异步交互。表单元素method属性:提交表单时所用的http方法,默认为get方法。get方式:将数据作为url地址的一部分发送给服务器

    2022年8月11日
    6

发表回复

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

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