1. newCachedThreadPool:线程池为无限大,当有用完线程,后面的线程就用用完线程,无有就新建。
//新建
ExecutorService cachedThreadPool=Executors.newCachedTheadPool()
//加入线程
cachedThreadPool.execute(...)
//尝试停止所有正在执行和等待的任务,并返回等待执行的任务的列表。
cachedThreadPool.shutdownNow()
//启动有序关闭,执行先前提交的任务,但不会接受新任务。
cachedThreadPool.shutdown()
2.newFixedThreadPool:线程池有限,超出的线程会在队列中等待。
//新建
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(//线程数,用Runtime.getRuntime().availableProcessors()获得虚拟机可用的处理器数,这里不能<=0
)
//加入线程
cachedThreadPool.execute(...)
//尝试停止所有正在执行和等待的任务,并返回等待执行的任务的列表。
cachedThreadPool.shutdownNow()
//启动有序关闭,执行先前提交的任务,但不会接受新任务。
cachedThreadPool.shutdown()
3.newScheduledThreadPool:定长线程池,支持定时及周期性任务
//新建
ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(池中保留的线程数)
//加入 延迟 线程
cachedThreadPool.schedule(...TimeUnit.SECONDS//秒)
//加入 定期 延迟 线程
cachedThreadPool.scheduleAtFixedRate(...TimeUnit.SECONDS//秒)
//尝试停止所有正在执行和等待的任务,并返回等待执行的任务的列表。
cachedThreadPool.shutdownNow()
//启动有序关闭,执行先前提交的任务,但不会接受新任务。
cachedThreadPool.shutdown()
4.newSingleThreadExecutor:单线程的线程池
//新建
ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor()
//加入线程
cachedThreadPool.execute(...)
//尝试停止所有正在执行和等待的任务,并返回等待执行的任务的列表。
cachedThreadPool.shutdownNow()
//启动有序关闭,执行先前提交的任务,但不会接受新任务。
cachedThreadPool.shutdown()
5.newSingleThreadScheduledExecutor:单线程的线程池,,支持定时及周期性任务
//新建
ScheduledExecutorService SingleThreadScheduledExecutor= Executors.newSingleThreadScheduledExecutor()
//加入 延迟 线程
SingleThreadScheduledExecutor.schedule(...TimeUnit.SECONDS//秒)
//加入 定期 延迟 线程
SingleThreadScheduledExecutor.scheduleAtFixedRate(...TimeUnit.SECONDS//秒)
//尝试停止所有正在执行和等待的任务,并返回等待执行的任务的列表。
cachedThreadPool.shutdownNow()
//启动有序关闭,执行先前提交的任务,但不会接受新任务。
cachedThreadPool.shutdown()