线程池
Posted chenxiaobo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程池相关的知识,希望对你有一定的参考价值。
为什么用线程池?
创建线程需要较大的系统开销;可以有效的控制线程最大并发数;可以对线程进行一些简单的管理(例如:延时执行、定时循环执行的策略)
常见的四种线程池
fixThreadPool
有核心线程,固定的线程数量,响应的速度快。
public static ExecutorService newFixedThreadPool(int threads) { return newFixedThreadPool(threads,threads,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>()); }
caCheThreadPool
只有非核心线程,最大线程数很大(Int.Max(values)),它会为每一个任务添加一个新的线程,这边有一个超时机制,当空闲的线程超过60s内没有用到的话,就会被回收。缺点就是没有考虑到系统的实际内存大小。
public static ExecutorService newCachedThreadPool(int threads) { return newFixedThreadPool(threads,Integer.MAX_VALUE,60L, TimeUnit.SECONDS,new SynchronousQueue<Runnable>()); }
singleThreadPool
只有一个核心线程,排队执行
ScheduledThreadPool
唯一一个有延迟执行和周期重复执行的线程池。它的核心线程池固定,非核心线程的数量没有限制,但是闲置时会立即会被回收。
以上是关于线程池的主要内容,如果未能解决你的问题,请参考以下文章