并发-线程池

线程池,使用Executors创建

CachedThreadPool

ExecutorService e = Executors.newCachedThreadPool()

底层:

ThreadPoolExecutor(

0,

Interger.MAX_VALUE,

60L,

TimeUnit.SECONDS,

new synchronousQueue<Runnable>()

)

FixedThreadPool

new的时候规定大小

ExecutorService e = Executors.newFixedThreadPool()

底层:

ThreadPoolExecutor(

arg1,

arg1

0L,

TimeUnit.MILLISECONDS,

new LinkedBlockingsQueue<Runnable>()

)

arg1是传入参数

LinkedBlockingQueue是无限大的

同步队列大小为0,也就是不存数据。

SingleThreadExecutor

大小只有1的FixedThreadPool

ExecutorService e = Executors.newSingleThreadExecutor()

其实都是ThreadPoolExcutor,只是传入参数不同

构造方法

ThreadPoolExecutor(

int corePoolSize, 核心池大小*

int maximumPoolSize, 总池子大小*

long keepAliveTime, 时间*

TimeUnit unit, 时间单位

BlockingQueue<Runnable> workQueue, 阻塞队列*

ThreadFactory threadFactory,生成线程的线程工厂

RejectExcutionHandler handler 当拒绝执行时的处理函数

)

加*的是重点

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 为什么要用线程池 关于为什么要使用多线程,请参考【多线程与并发】:线程的创建、状态、方法中的最后一点。 那为什么要...
    maxwellyue阅读 3,561评论 0 1
  • 前段时间遇到这样一个问题,有人问微信朋友圈的上传图片的功能怎么做才能让用户的等待时间较短,比如说一下上传9张图片,...
    加油码农阅读 4,921评论 0 2
  • 线程池作用 相对于为每个请求都创建一个线程,线程池通过重用现有的线程而不是创建新线程,可以在处理多个请求时分摊在线...
    Java大生阅读 5,057评论 0 31
  • 一、明确金钱对你的意义,确立三个重要的财务目标 相信很多人都有自己的财务目标,但是你有没有想过自己具体的财务目标是...
    遇见大兰阅读 1,690评论 0 1
  • 时间和积累是个好东西,会在不知的某个点,哄的贯通起来。 人,也就通了! 大多数的人,把自己的耐心、温柔、和善,好的...
    初苗说阅读 903评论 0 1