Java的四种线程池之newCachedThreadPool
一、概念
创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
存在三个任务a,b,c。线程池创建线程1用于执行任务a,如果a任务执行完后,任务c尚未执行,则线程1将用于执行任务c。
二、Java代码
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* @author Dell
*
*/
public class ExecutorsTest {
/**@Description: TODO
* @param args void
* @author: zhai
* @date: 2022年2月14日 下午3:13:07
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
newCachedThreadPoolTest();
}
/*newCachedThreadPool 创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。*/
public static void newCachedThreadPoolTest() {
ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
for (int i = 1; i <= 50; i++) {
final int index = i;
cachedThreadPool.execute(new Runnable() {
@Override
public void run() {
System.out.println(index+"我被执行了"+Thread.currentThread().getName());
}
});
}
cachedThreadPool.shutdown();
}
}