线程池之ThreadPoolExecutor

线程池参数:

    • corePoolSize:线程池核心线程个数
    • workQueue:用于保存等待执行的任务的阻塞队列。
      比如基于数组的有界ArrayBlockingQueue、,基于链表的无界LinkedBlockingQueue,最多只有一个元素的同步队列SynchronousQueue,优先级队列PriorityBlockingQueue,具体可参考 https://www.atatech.org/articles/81568

    • maximunPoolSize:线程池最大线程数量。

    • ThreadFactory:创建线程的工厂
    • RejectedExecutionHandler:饱和策略,当队列满了并且线程个数达到maximunPoolSize后采取的策略,比如AbortPolicy(抛出异常),CallerRunsPolicy(使用调用者所在线程来运行任务),DiscardOldestPolicy(调用poll丢弃一个任务,执行当前任务),DiscardPolicy(默默丢弃,不抛出异常)
    • keeyAliveTime:存活时间。如果当前线程池中的线程数量比核心线程数量要多,并且是闲置状态的话,这些闲置的线程能存活的最大时间
    • TimeUnit,存活时间的时间单位
        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
                1,
                2,
                10L,
                TimeUnit.SECONDS,
                new LinkedBlockingQueue<>(1),
                new ThreadPoolExecutor.DiscardPolicy()
        )

 

posted @ 2018-01-22 16:48  heapStark  阅读(125)  评论(0编辑  收藏  举报