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

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

时间:2015-07-04 17:02:32      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:

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)


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

标签:

原文地址:http://my.oschina.net/djone/blog/474571

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