import java.util.concurrent.*;
/**
* java线程池的使用
* 这个【可缓存线程池】,没看出来有什么用呢。。。
*/
public class ExecutorServiceTest {
public static void main(String[] args) throws ExecutionException, InterruptedException {
ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
for (int i = 0; i < 10; i++) {
final int index = i;
Thread.sleep(index * 1000);
cachedThreadPool.execute(new Runnable() {
@Override
public void run() {
System.out.println(index + " 当前线程:" + Thread.currentThread().getName() + "当前任务时间:"
+ System.currentTimeMillis());
}
});
}
}
}
打印结果:
0 当前线程:pool-1-thread-1当前任务时间:1538209339519
1 当前线程:pool-1-thread-1当前任务时间:1538209340519
2 当前线程:pool-1-thread-1当前任务时间:1538209342519
3 当前线程:pool-1-thread-1当前任务时间:1538209345519
4 当前线程:pool-1-thread-1当前任务时间:1538209349519
5 当前线程:pool-1-thread-1当前任务时间:1538209354519
6 当前线程:pool-1-thread-1当前任务时间:1538209360519
7 当前线程:pool-1-thread-1当前任务时间:1538209367519
8 当前线程:pool-1-thread-1当前任务时间:1538209375519
9 当前线程:pool-1-thread-1当前任务时间:1538209384519
线程池为无限大,当执行第二个任务时第一个任务已经完成,会复用执行第一个任务的线程,而不用每次新建线程。所以任务太多,可能系统会瘫痪。