newCachedThreadPool 缓存默认60s
猜下你的结果
package com.juc.threadpool; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * Created by Administrator on 2018/6/27. */ public class CachedThreadPoolDemo { public static void main(String[] args) throws InterruptedException { ExecutorService executorService = Executors.newCachedThreadPool(); for (int i = 0; i < 10; i++) { final int s = i; executorService.execute(() -> { try { System.out.println("" + s + ";;;" + Thread.currentThread().getName()); } catch (Exception e) { e.printStackTrace(); } }); } Thread.sleep(2000);//2s executorService.execute(() -> { try { System.out.println(";;;" + Thread.currentThread().getName()); } catch (Exception e) { e.printStackTrace(); } }); } }
线程被复用一次
package com.juc.threadpool; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * Created by Administrator on 2018/6/27. */ public class CachedThreadPoolDemo { public static void main(String[] args) throws InterruptedException { ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); for (int i = 0; i < 10; i++) { final int index = i; try { System.out.println("睡起来..."); Thread.sleep(index * 1000); } catch (Exception e) { e.printStackTrace(); } cachedThreadPool.execute(new Runnable() { @Override public void run() { System.out.println(index + "当前线程" + Thread.currentThread().getName()); } }); } } }
线程被重用
适合场景:流量洪峰一波一波的来,
原文:https://www.cnblogs.com/jinjian91/p/9236648.html