package _01_Test;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* 1 减少创建和销毁次数
*
* 2 可以重复使用
*
* 3 统一管理线程数量
*/
public class _05_NewCachedThreadPool {
public static void main(String[] args) {
// 创建一个可缓存的线程池
// 若没有可以回收的,就创建新的线程,线程池规模没有限制,数量不固定
ExecutorService cachExecutorService = Executors.newCachedThreadPool();
for (int i = 0; i < 10; i++) {
// 循环创建,并且都在线程中睡眠一秒,会创建10个线程
cachExecutorService.execute(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName());
}
});
}
//此时上面10个线程都已执行完成,有线程空闲,不会新建线程
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 执行任务
cachExecutorService.execute(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName());
}
});
System.out.println("OOOO");
// 关闭线程池
cachExecutorService.shutdown();
}
}