Java中线程池的种类

来源:互联网 发布:为什么淘宝没有gta5 编辑:程序博客网 时间:2024/05/15 12:43

因为线程的创建和销毁是一项十分消耗资源的操作,为了避免这种浪费,所以可以用线程池,Java中提供了4种线程池:

newCachedThreadPool

newCachedThreadPool创建一个可缓存线程池,理论上线程数目是没有什么限制的,其实最大数目是Interger.MAX_VALUE,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。适用于执行很多短期异步的小程序或者负载较轻的服务器。

newFixedThreadPool

newFixedThreadPool创建一个固定大小的线程池,可控制线程最大并发数,超出的线程会在队列中等待。在线程池空闲时,即线程池中没有可运行任务时,它不会释放工作线程,还会占用一定的系统资源。适用于执行长期的任务,性能好很多。

newScheduledThreadPool

newScheduledThreadPool 创建一个固定大小的线程池,支持定时及周期性任务执行,适用于周期性执行任务的场景。

newSingleThreadExecutor

newSingleThreadExecutor 创建一个单一线程的线程池,它只会用唯一的工作线程来执行任务,当该线程正繁忙时,对于新任务会进入阻塞队列中。适用于一个任务一个任务执行的场景。

参考资料

http://www.cnblogs.com/sachen/p/7401959.html
http://xtu-xiaoxin.iteye.com/blog/647580
http://blog.csdn.net/paul342/article/details/52442932