淘先锋技术网

首页 1 2 3 4 5 6 7

Java通过Executors提供四种线程池,分别为:
newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

newCachedThreadPool用法


特点
会根据需要创建新线程,如果线程池中有可复用的,会先服用可用的。
这个线程池典型的场景是改善 任务耗时短小的 异步任务。
使用execute可以复用可用的线程。如果没有可用线程,会创建新线程并添加到线程池里。
那些1分钟没有被使用的线程将被停止并从缓存里移除。


newFixedThreadPool(int threadCount)


特点
可以复用指定数目的线程
如果请求的线程数目大于目前idle的,那么多余的请求将被等待,直到线程池中有可用的线程。
如果有任何线程执行过程中停止了,将会新建一个线程代替。
线程池中的线程一直存活,直到显式的使用shutdown关闭。


newScheduledThreadPool的实现


定时延迟 + 循环执行


newSingleThreadExecutor


这里写图片描述