package com.neutron.t23;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
/**
* 线程池
* 1.固定个数的线程池
* 2.缓存线程池,开始线程数0
* 如果需要线程,当前线程池没有,那么创建线程池
* 如果需要线程,线程池中有没有使用的线程,那么使用已经存在的线程
* 如果线程池中线程超过60秒(默认)没有使用,那么该线程停止
*/
public class T238CachedPool {
/*
T1:java.util.concurrent.ThreadPoolExecutor@2503dbd3
[Running, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0]
T2:java.util.concurrent.ThreadPoolExecutor@2503dbd3
[Running, pool size = 2, active threads = 2, queued tasks = 0, completed tasks = 0]
pool-1-thread-1
pool-1-thread-2
T3:java.util.concurrent.ThreadPoolExecutor@2503dbd3
[Running, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 2]
*/
public static void main(String[] args) throws InterruptedException, ExecutionException {
// 创建缓存线程池
ExecutorService service = Executors.newCachedThreadPool();
System.out.println("T1:" + service);
for (int i = 0; i < 2; i++) {
service.execute(() -> {
try {
TimeUnit.MILLISECONDS.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName());
});
}
System.out.println("T2:" + service);
TimeUnit.SECONDS.sleep(70);
System.out.println("T3:" + service);
}
}
thread49 - CashedPool
最新推荐文章于 2022-06-10 10:21:48 发布