CachedThreadPool的使用简析

CachedThreadPool作用

会根据任务数量创建相对应的线程数,不过CachedThreadPool的核心线程数默认为0,所以可想而知,这些创建
出来的线程对应的都是最大线程数,这些线程会被缓存以试图能被重复使用,不过默认60秒没使用的话,就会被回收,所以这个类型的线程适合用于在短时间内处理大量任务。

示例代码

public class TestMain {
    //格式化
    static SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    //AtomicInteger用来计数
    static AtomicInteger number = new AtomicInteger();

    public static void main(String[] args) throws Exception {
        ExecutorService executorService = Executors.newCachedThreadPool();
        for (int i = 0; i < 6; i++) {
            executorService.execute(new Runnable() {
                @Override
                public void run() {
                    System.out.println("运行第" + number.incrementAndGet() + "个线程,当前时间【" + sim.format(new Date()) + "】");
                    try {
                        Thread.sleep(6000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    }
}

运行结果:
在这里插入图片描述

总结

可以看到这6个任务是并发执行的,说明每个任务都有对应的一个线程去执行。

发布了208 篇原创文章 · 获赞 204 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_38106322/article/details/104492086