码迷,mamicode.com
首页 > 编程语言 > 详细

ThreadPoolExecutor线程池

时间:2018-02-24 19:29:16      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:nan   class   https   factory   minutes   locking   效率   reject   long   

为什么使用线程池:

1、创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率。

2、线程并发数量过多,抢占系统资源从而导致阻塞。

3、对线程进行一些简单的管理。

在java中,线程池的类为ThreadPoolExecutor,该类提供了四种构造方法:

//五个参数的构造函数
public ThreadPoolExecutor(int corePoolSize,
                          int maximumPoolSize,
                          long keepAliveTime,
                          TimeUnit unit,
                          BlockingQueue<Runnable> workQueue)

//六个参数的构造函数-1
public ThreadPoolExecutor(int corePoolSize,
                          int maximumPoolSize,
                          long keepAliveTime,
                          TimeUnit unit,
                          BlockingQueue<Runnable> workQueue,
                          ThreadFactory threadFactory)

//六个参数的构造函数-2
public ThreadPoolExecutor(int corePoolSize,
                          int maximumPoolSize,
                          long keepAliveTime,
                          TimeUnit unit,
                          BlockingQueue<Runnable> workQueue,
                          RejectedExecutionHandler handler)

//七个参数的构造函数
public ThreadPoolExecutor(int corePoolSize,
                          int maximumPoolSize,
                          long keepAliveTime,
                          TimeUnit unit,
                          BlockingQueue<Runnable> workQueue,
                          ThreadFactory threadFactory,
                          RejectedExecutionHandler handler)

方法中的参数:

int corePoolSize  线程池中核心线程大小

  在线程池中的线程小于核心线程数时,则新建的线程属于核心线程,否则属于非核心线程。默认情况下,核心线程会一直存货于线程池,即使什么也不做。但如果指定类中的allowCoreThreadTimeOut为true,则核心线程闲置一定时间后也会被销毁,具体时间,由参数指定。

int maximumPoolSize  线程池中最大线程数

  线程池中存在的线程数量不会超过最大线程数,如果在达到最大线程数后仍有新的任务需要执行,则会进行排队。

long keepAliveTime  非核心线程的最大存活时间

  线程池中的非核心线程处于闲置状态时,则会开始计时,达到指定时间后将被销毁。如果指定参数allowCoreThreadTimeOut为true,则核心线程同样适用。

TimeUnit unit  keepAliveTime的单位

  类型TimeUnit是枚举类型,包括

    NANOSECONDS : 1微毫秒 = 1微秒 / 1000

    MICROSECONDS : 1微秒 = 1毫秒 / 1000

    MILLISECONDS : 1毫秒 = 1秒 /1000

    SECONDS : 秒

    MINUTES : 分

    HOURS : 小时

    DAYS : 天

BlockingQueue<Runnable> workQueue  任务队列

  等待执行的Runnable对象。

 

原文链接:https://www.jianshu.com/p/210eab345423

ThreadPoolExecutor线程池

标签:nan   class   https   factory   minutes   locking   效率   reject   long   

原文地址:https://www.cnblogs.com/yxth/p/8467087.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!