【面试必备】简单了解下ExecutorService

在Java 5以后,ExecutorService类被引入,主要是为了方便线程的统一管理。缓存

ExecutorService的做用

ExecutorService实际上是一个线程池,它能够接收任务,而后根据配置来分配线程,并控制其调度。线程

分类

newCacheThreadPool

  • 这种线程池是无界线程池,即它能够建立任意条线程。
  • 每次建立新线程时,先检查本身的缓存池中有没有,没有才会建立。
  • 它有默认的TimeOut(=60s),超过这个时长没活动的线程就会被自动的移除,因此彻底没必要要担忧线程的结束问题。
  • 这是比较推荐的类型。

newFixedThreadPool

这个线程和newCacheThreadPool很相似,不一样点在于:队列

  • 它有线程数量上限。
  • 它没有默认的TimeOut。

ScheduledThreadPool

  • 它能够按照顺序延迟调度线程。

SingleThreadPool

  • 它只有一条线程。
  • 感受并无多大用处。

ThreadPoolExecutor

这种类型的线程池能够本身配置相关参数。table


参数 说明
corePoolSize 池中所保存的线程数,包括空闲线程。
maximumPoolSize 池中容许的最大线程数。’
keepAliveTime 当线程数大于核心时,此为终止多余的空闲等待新任务的线程的最长时间。
workQueue 执行前用于保持任务的队列。此队列仅保持由 execute 方法提交的 Runnable 任务。
相关文章
相关标签/搜索