Executors提供的四种线程池

转载 2016年08月31日 11:03:00

Executors提供的四种线程池


java.util.concurrent.Executors类,提供了创建四种线程池的方法,相关方法及对应的功能如下:

1、newCachedThreadPool:用来创建一个可缓存线程池,该线程池没有长度限制,对于新的任务,如果有空闲的线程,则使用空闲的线程执行,如果没有,则新建一个线程来执行任务。如果线程池长度超过处理需要,可灵活回收空闲线程。代码示例:

  1. ExecutorService cachedThreadPool = Executors.newCachedThreadPool();    

2、newFixedThreadPool :用来创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。定长线程池的大小通常根据系统资源进行设置:Runtime.getRuntime().availableProcessors()。代码示例:

  1. ExecutorService fixedThreadPool = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());    

3、newScheduledThreadPool:用来创建一个定长线程池,并且支持定时和周期性的执行任务。代码示例:

  1. /** 
  2. * 定时执行 
  3. */  
  4. ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(20);  // 长度20  
  5. scheduledThreadPool.schedule(task, 10, TimeUnit.SECONDS);   // 延迟10s执行  
  6.   
  7. /** 
  8. *周期性执行 
  9. */  
  10. ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(20);  // 长度20  
  11. scheduledThreadPool.scheduleAtFixedRate(task,105, TimeUnit.SECONDS); // 延迟10s执行,每个5s执行一次。  

4、newSingleThreadExecutor:用来创建一个单线程化的线程池,它只用唯一的工作线程来执行任务,一次只支持一个,所有任务按照指定的顺序执行。代码示例:

1:ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();


欢迎关注爪哇的世界公众号,每天有最新java咨讯为你推送







Executors的四种线程池

线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托...
  • fOrLOveDoit
  • fOrLOveDoit
  • 2017年02月16日 13:35
  • 401

[一点笔记]Java ExecutorService四种线程池的例子与说明

java线程池的一些笔记
  • u012393192
  • u012393192
  • 2017年10月19日 10:52
  • 146

Executors提供的四种线程池

newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创建一个定长线程池,可控制...
  • caihaijiang
  • caihaijiang
  • 2014年06月14日 22:28
  • 4007

java源码分析系列一 线程池Executors

用了线程池已经有一段时间了,以前只是偶尔看看源码,了解了其中调度策略,没有深入研究。因为平常没有遇见什么问题。但是作为一个程序员要严格要求自己,做到未雨绸缪废话不说了,开始我们的源码之旅!      ...
  • yangchangji
  • yangchangji
  • 2017年01月12日 20:20
  • 1474

Java通过Executors提供四种线程池

Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 new...
  • mack415858775
  • mack415858775
  • 2016年05月26日 17:03
  • 2075

黑马程序员,用Executors来创建三种java的自带线程池

今天看视频自学了java线程池,如果学习线程池的具体实现方法,在ExecutorService中有许多函数要重写,许多参数我也不太懂,所以我只是看了Executors类中三个工厂方法来创建线程池。 1...
  • u012605440
  • u012605440
  • 2014年12月24日 23:17
  • 887

Java线程池详解:ThreadPoolExecutor、Executors

在操作系统中,线程是一个非常重要的资源,频繁创建和销毁大量线程会大大降低系统性能。Java线程池原理类似于数据库连接池,目的就是帮助我们实现线程复用,减少频繁创建和销毁线程。ThreadPoolExe...
  • xiao__gui
  • xiao__gui
  • 2016年04月05日 14:04
  • 2506

Executors创建线程池的弊端

Executors创建线程池的弊端 线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式, 这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风...
  • admin1973
  • admin1973
  • 2017年12月01日 13:44
  • 247

线程池作用及Executors方法讲解

线程池作用及Executors方法讲解
  • dong_19890208
  • dong_19890208
  • 2016年01月07日 11:12
  • 495

Executors与ThreadPoolExecutor(阿里发布的 Java开发手册中强制线程池不允许使用 Executors 去创建)

最近阿里发布的 Java开发手册中强制线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗...
  • qq_33300570
  • qq_33300570
  • 2017年10月30日 16:14
  • 1015
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Executors提供的四种线程池
举报原因:
原因补充:

(最多只允许输入30个字)