2019独角兽企业重金招聘Python工程师标准>>>

#简述 Executors是一个工厂类,是ExecutorService的实用方法。他能够产生ExecutorService、ScheduledExecutorService、ThreadFactory和Callable实例。 #方法介绍

 public static ExecutorService newFixedThreadPool(int nThreads) {return new ThreadPoolExecutor(nThreads, nThreads,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>());}

创建一个线程数固定的可复用线程池。该线程池包含一个无界共享队列。线程池中有固定的活跃线城处理任务,如果多余的任务进入则放置到无界共享队列中去等待有线程空余。如果有任何一个线程在线程池关闭之前执行任务的过程中失败而被终止,则新的线程将要代替它执行子任务。线程池里面的线程在线程池被关闭之前一直存活。

 public static ExecutorService newFixedThreadPool(int nThreads, ThreadFactory threadFactory) {return new ThreadPoolExecutor(nThreads, nThreads,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>(),threadFactory);}

和上一个不同的是,构造方法新加了一个线程工厂。该工厂能够在必要的时候为线程池新增线程。

  public static ExecutorService newSingleThreadExecutor() {return new FinalizableDelegatedExecutorService(new ThreadPoolExecutor(1, 1,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>()));}static class FinalizableDelegatedExecutorServiceextends DelegatedExecutorService {FinalizableDelegatedExecutorService(ExecutorService executor) {super(executor);}protected void finalize() {super.shutdown();}}

创建一个单线程的线程池。该方法返回了一个FinalizableDelegatedExecutorService实例,FinalizableDelegatedExecutorService类是ExecutorService的包装类。

 public static ExecutorService newSingleThreadExecutor(ThreadFactory threadFactory) {return new FinalizableDelegatedExecutorService(new ThreadPoolExecutor(1, 1,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>(),threadFactory));}

也是一个单线程池,返回了包装类,拒绝修改线程池信息,并且放置了一个线程工厂类,可以在适当的时候新生成一个线程(比如以前的那个线程由于异常状况被关闭)。

public static ExecutorService newCachedThreadPool() {return new ThreadPoolExecutor(0, Integer.MAX_VALUE,60L, TimeUnit.SECONDS,new SynchronousQueue<Runnable>());}

创建一个线程池,线程池中创建需要的线程。任务可以复用之前创建的线程。该线程池能够通过执行许多生命周期段的异步任务来提高程序性能。在调用execute方法的过程中会复用之前创建的可用线程。如果没有线程可用,线程池会新创建线程并添加到线程池中,如果线程超过60秒钟还未使用则会从缓存中删除。

 public static ScheduledExecutorService newSingleThreadScheduledExecutor() {return new DelegatedScheduledExecutorService(new ScheduledThreadPoolExecutor(1));}

创建了一个单线程执行周期性任务。返回包装器类,不可改变线程池信息。

public static ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory) {return new DelegatedScheduledExecutorService(new ScheduledThreadPoolExecutor(1, threadFactory));}

和上面的方法类似,不同的是指定了创建新线程的工厂实例。

  public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize) {return new ScheduledThreadPoolExecutor(corePoolSize);}

创建执行周期任务的线程池,线程池中的线程数为corePoolSize。

转载于:https://my.oschina.net/zjItLife/blog/668274

Executors浅析相关推荐

  1. 【flink】Flink 1.12.2 源码浅析 : StreamTask 浅析

    1.概述 转载:Flink 1.12.2 源码浅析 : StreamTask 浅析 在Task类的doRun方法中, 首先会构建一个运行环境变量RuntimeEnvironment . 然后会调用lo ...

  2. Java多线程编程:Callable、Future和FutureTask浅析(多线程编程之四)

    java多线程-概念&创建启动&中断&守护线程&优先级&线程状态(多线程编程之一) java多线程同步以及线程间通信详解&消费者生产者模式&死锁 ...

  3. 知其所以然之Nacos配置中心源码浅析

    文章目录 引例 NacosConfigService的初始化 ServerHttpAgent的构造函数解析 ServerListManager的构造函数解析 ConfigFilterChainMana ...

  4. 浅析Broadcast

    浅析 Broadcast 主要有三种对象 BroadcastManager.BroadcastFactory 和 Broadcast BroadcastManager 负责Broadcast的全局管理 ...

  5. 浅析 JavaScript 中的 函数 uncurrying 反柯里化

    柯里化 柯里化又称部分求值,其含义是给函数分步传递参数,每次传递参数后部分应用参数,并返回一个更具体的函数接受剩下的参数,这中间可嵌套多层这样的接受部分参数函数,直至返回最后结果. 因此柯里化的过程是 ...

  6. 浅析Python中bytes和str区别

    本博转载自:Chown-Jane-Y的浅析Python3中的bytes和str类型 Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示, ...

  7. 学习《Linux设备模型浅析之设备篇》笔记(深挖一)

    这篇文章既然说了是浅析,那就是跳过了一些东西,我们把这些跳过的东西给它尽可能的补回来 今天登陆 lxr.free-electrons.com 发现内核版本已经升级到3.15了,那以后都使用3.15的源 ...

  8. 学习《Linux设备模型浅析之设备篇》笔记(一)

    最近在学习Linux设备模型,前面几篇文章也是读这篇的时候遇到问题,然后为了搞清楚先转去摸索才写出来的. 当然了,刚开始是先读到<Linux那些事儿之我是Sysfs>,搞不清楚才去读的&l ...

  9. 深入浅出 Java Concurrency (29): 线程池 part 2 Executor 以及Executors[转]

    Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具.真正的线程池接口是ExecutorService. 下面这张图完整描述了线程 ...

最新文章

  1. Alphabet量子公司横空出世!Sandbox将与谷歌、DeepMind成姊妹
  2. linux代码环境配置,linux下配置环境变量【原创】(示例代码)
  3. python语言表白语句简单_简短的表白语句
  4. 在阿里云服务器(Ubuntu系统)下使用WordPress搭建博客网站教程
  5. fuser 用法简析
  6. 可见光能量范围_JACS:游书力团队通过可见光促进的吲哚衍生物分子内去芳构化合成环丁烷稠合的四环吲哚螺环...
  7. 计算机实验室工作案例,2011年计算机学院实验室工作计划.
  8. (二)GKE上MLOps的Jenkins作业和部署
  9. 以太坊的POS共识机制(一)友善的小精灵 Casper
  10. 日常生活小常识100条
  11. 如何用Python找回微信撤回信息
  12. Double的compareTo
  13. 数据库关系模型与关系运算---2022.2.13
  14. 数字时代,医疗健康企业如何通过数字营销创造用户价值
  15. 如何使用ArcGIS裁剪栅格图
  16. 正则_验证文本框输入的姓名是否规范(包含生僻字,不包含中文符号与其他字符)...
  17. MegaFace完整数据集(65G)
  18. 绝密文档公开!首次揭秘数栈导航设计思路
  19. 飞旭体质健康测试云平台学生体质测试管理系统
  20. 你所不知道的MySQL数据库性能优化方案

热门文章

  1. Apple 的 CEO和Google的CEO在星巴克聊什么呢?
  2. [转载]XSS 攻擊常用腳本
  3. 集群监控之Ganglia的部署
  4. python 安卓模拟器电脑版_【夜神安卓模拟器电脑版】夜神安卓模拟器电脑版 V6.6.0.6免费版官方免费下载_正式版下载-多特软件站...
  5. python mysql实例_Python 操作MySQL详解及实例
  6. c语言不同类型变量用什么表示什么作用,C语言数据类型及变量整理
  7. conda指定路径_导出不带前缀变量的conda环境,该变量显示executab的本地路径
  8. C++ 二进制文件读操作
  9. 啊!多么痛的领悟···
  10. android p安装教程,Android SDK的安装教程