newSingleThreadExecutor
1 | public static ExecutorService newSingleThreadExecutor() { |
使用场景
- 希望多个任务排队执行,线程固定为
1
,任务多于1
时,会放入无界队列排队,执行完毕后,这唯一线程也不会被释放
区别
- 自己创建一个单线程串行执行任务,如果任务执行失败而终止那么,没有任何补救措施,而线程池还会创建一个新的线程,保证池的正常工作
Executors.newSingleThreadExecutor()
线程个数始终为1
,不能修改FinalizableDelegatedExecutorService
应用的是装饰器模式,只能对外暴露ExecutorService
接口,因此不能调用ThreadPoolExecutor
中特有方法
Executors.newFixedThreadPool(1)
初始为1
,以后还可以修改- 对外暴露的是
ThreadPoolExecutor
对象,可以强转后调用setCorePoolSize
等方法进行修改
- 对外暴露的是
1 | package com.redisc; |
输出
1 | 23:49:58.157 [pool-1-thread-1] DEBUG c.Test - 1 |