创建指定大小,当空闲超时还会自动销毁线程的线程池

WO想要Executor线程池,WO还想要限制线程池大小,WO还想要线程闲置超时能自动销毁。

好的~

ThreadPoolExecutor mThreadPool = new ThreadPoolExecutor(poolSize, 0, maxIdleTime, TimeUnit.SECONDS, LinkedBlockingQueue<Runnable>()); // poolSize为线程池大小;maxIdleTime为允许的闲置时间,超时即毁
mThreadPool.allowCoreThreadTimeOut(true); //允许超时后销毁线程
mThreadPool.execute(Runnable() {
    run() {
        // OOXXOO
    }
}

===========================================================

详细的代码功能,参见 :

1, Executors.new*ThreadPool()代码;

2, oracle java 文档 节选:

  • 排队:

    1. 直接提交。 SynchronousQueue,它将任务直接提交给线程而不保持它们。在此,如果不存在可用于立即运行任务的线程,则试图把任务加入队列将失败,因此会构造一个新的线程。

    2. 无界队列。使用无界队列(例如,不具有预定义容量的 LinkedBlockingQueue)将导致在所有 corePoolSize 线程都忙时新任务在队列中等待。这样,创建的线程就不会超过 corePoolSize。(因此,maximumPoolSize 的值也就无效了。)

  • 如果希望确保回收取消引用的池:设置适当保持活动时间,使用 0 核心线程的下边界和/或设置 allowCoreThreadTimeOut(boolean)


你可能感兴趣的:(创建指定大小,当空闲超时还会自动销毁线程的线程池)