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


相关推荐

  • Linux初识[通俗易懂]

    Linux发展史简介Linux是一套自由加开放源代码的类Unix操作系统,诞生于1991年10月5日(第一次正式向外公布),由芬兰学生LinusTorvalds和后来陆续加入的众多爱好者共同开发

    2022年3月29日
    34
  • fedora内核版本_ubuntu内核升级

    fedora内核版本_ubuntu内核升级声明一下我的系统环境:WindowsXPSP3+Vmware7虚拟机Fedora12DVDi386安装镜像。首先安装的时候要注意,在选择安装文件的时候选择“网页,软件开发,服务器。。。”这样就用有GCC了,以及其他的插件。 1,下载内核官方网址:www.kernel.org,我下载的版本是2.6.33,文件名为:linux-2.6.33.tar,但是到Li

    2022年9月13日
    0
  • Python实现翻译小工具「建议收藏」

    Python实现翻译小工具「建议收藏」一、背景利用Requests模块获取有道词典web页面的post信息,BeautifulSoup来获取需要的内容,通过tkinter模块生成gui界面。二、代码git源码地址fanyi.py代

    2022年7月5日
    22
  • 此工作站和主域直接信任失败_主域间的信任关系失败

    此工作站和主域直接信任失败_主域间的信任关系失败故障现象:win7输入账户登录后,提示错误”此工作站和主域间的信任关系失败”,所有域用户无法登录,如图:解决方式:1.微软官方,退域重新加入域https://support.microsoft.com/en-us/kb/27710402.其他建议,“重置计算机账户”https://redmondmag.com/articles/201…

    2022年10月18日
    0
  • months_between的使用

    months_between的使用months_between用于计算两个日期之间相差的月数语法:months_between(date1,date2)举例a20210201与20210301selectmonths_bet

    2022年6月30日
    25
  • qq不能接收图片如何解决_qq文件未上传至服务器

    qq不能接收图片如何解决_qq文件未上传至服务器原因一:一般是网速比较慢,电信联通教育他们内部传图片大家都能收到,教育网给联通发就一般收不到了,清理下你的QQ图片文件夹,里面堆积的图片太多了原因二:由于网络问题,查看手机移动数据流量或者wifi连接是否正常。QQ版本问题,将QQ版本升级到最新版本重新尝试发送图片。查看对方是否删除了自己以及屏蔽了消息,这样是无法正常发送图片如果你不能确定是否是因为QQ图片文件夹的关系导致自己不能发送图片,那么小…

    2022年8月10日
    3

发表回复

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

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