Executors的工厂方法提供的5种不同的线程池

原创 2015年11月17日 18:51:00
1、newFixedThreadPool() : 
作用:该方法返回一个固定线程数量的线程池,该线程池中的线程数量始终不变,即不会再创建新的线程,也不会销毁已经创建好的线程,自始自终都是那几个固定的线程在工作,所以该线程池可以控制线程的最大并发数。 
栗子:假如有一个新任务提交时,线程池中如果有空闲的线程则立即使用空闲线程来处理任务,如果没有,则会把这个新任务存在一个任务队列中,一旦有线程空闲了,则按FIFO方式处理任务队列中的任务。


2、newCachedThreadPool() : 
作用:该方法返回一个可以根据实际情况调整线程池中线程的数量的线程池。即该线程池中的线程数量不确定,是根据实际情况动态调整的。 
栗子:假如该线程池中的所有线程都正在工作,而此时有新任务提交,那么将会创建新的线程去处理该任务,而此时假如之前有一些线程完成了任务,现在又有新任务提交,那么将不会创建新线程去处理,而是复用空闲的线程去处理新任务。那么此时有人有疑问了,那这样来说该线程池的线程岂不是会越集越多?其实并不会,因为线程池中的线程都有一个“保持活动时间”的参数,通过配置它,如果线程池中的空闲线程的空闲时间超过该“保存活动时间”则立刻停止该线程,而该线程池默认的“保持活动时间”为60s。


3、newSingleThreadExecutor() : 
作用:该方法返回一个只有一个线程的线程池,即每次只能执行一个线程任务,多余的任务会保存到一个任务队列中,等待这一个线程空闲,当这个线程空闲了再按FIFO方式顺序执行任务队列中的任务。


4、newScheduledThreadPool() : 
作用:该方法返回一个可以控制线程池内线程定时或周期性执行某任务的线程池。


5、newSingleThreadScheduledExecutor() : 
作用:该方法返回一个可以控制线程池内线程定时或周期性执行某任务的线程池。只不过和上面的区别是该线程池大小为1,而上面的可以指定线程池的大小。
版权声明:本文为博主原创文章,未经博主允许不得转载。

ThreadPoolExecutor,worker和线程工厂之间理解

ThreadPoolExecutor中一个线程就是一个Worker对象,它与一个线程绑定,当Worker执行完毕就是线程执行完毕,这个在后面详细讨论线程池中线程的运行方式。而Worker带了锁,根据我...
  • xiaojiahao_kevin
  • xiaojiahao_kevin
  • 2016年06月25日 20:55
  • 1399

线程池与工厂模式、代理模式的结合使用

为了提高代码的效率,我们经常会使用到线程池,那在实际项目工作中,如何将线程池与工厂模式和代理模式结合使用,使我们的代码更高效,更具有面象对象的思想,以及维护和拓展性更高呢? 接下来,我将结合下列代码...
  • GitHub_boy
  • GitHub_boy
  • 2016年04月03日 01:27
  • 1381

使用Executors工厂类创建线程池

接口Executor仅仅是一种规范,是一种声明,是一种定义,并没有实现任何的功能,所以大多数的情况下,需要使用接口的实现类来完成指定的功能,比如ThreadPoolExecutor类就是Executo...
  • ApatheCrazyFan
  • ApatheCrazyFan
  • 2017年03月25日 23:17
  • 399

Java并发学习之十——用线程工厂创建线程

本文是学习网络上的文章时的总结,感谢大家无私的分享。  1、工厂模式是最有用的设计模式。它是一个创造模式,还有他的目的是创建一个 或者几个类对象的对象。有了这个工厂,我们有这些优势集中创建对象...
  • junshuaizhang
  • junshuaizhang
  • 2014年08月25日 19:09
  • 2773

Java Executors 和 ThreadPoolExecutor 线程池

Executors提供四种线程池,分别为: newCachedThreadPool 创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。线程池为无限大,当执...
  • xlxxcc
  • xlxxcc
  • 2016年08月04日 00:21
  • 2300

线程池系列一:线程池作用及Executors方法讲解

文章来源:http://zy116494718.iteye.com/blog/1704344 线程池的作用:      线程池作用就是限制系统中执行线程的数量。      根据系统的...
  • l_215851356
  • l_215851356
  • 2016年05月19日 17:46
  • 2601

Java Executors(线程池)

Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Java5的新特征之一,除了线程池之外,还有很多多线程相关的内容,为多线程的编程带来了极大便利。为了编写高效稳定可靠的多线程程序...
  • coding_or_coded
  • coding_or_coded
  • 2011年10月09日 16:37
  • 47835

Java线程池详解:ThreadPoolExecutor、Executors

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

线程池作用及Executors方法讲解

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

Java线程池类ThreadPoolExecutor、ScheduledThreadPoolExecutor及Executors工厂类

Java中的线程池类有两个,分别是:ThreadPoolExecutor和ScheduledThreadPoolExecutor,这两个类都继承自ExecutorService。利用这两个类,可以创建...
  • suifeng3051
  • suifeng3051
  • 2015年10月27日 10:02
  • 5946
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Executors的工厂方法提供的5种不同的线程池
举报原因:
原因补充:

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