线程池 发表于 2018-02-22 | 分类于 juc 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748package cn.itcast.heima2;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.TimeUnit;public class ThreadPoolTest { /** * @param args */ public static void main(String[] args) {// ExecutorService threadPool = Executors.newFixedThreadPool(3); ExecutorService threadPool = Executors.newCachedThreadPool();// ExecutorService threadPool = Executors.newSingleThreadExecutor();//todo 线程死掉以后怎么重新启动,只能找一个替补方案 for(int i=1;i<=10;i++){ final int task = i; threadPool.execute(new Runnable(){ @Override public void run() { for(int j=1;j<=10;j++){ try { Thread.sleep(20); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + " is looping of " + j + " for task of " + task); } } }); } System.out.println("all of 10 tasks have committed! "); //threadPool.shutdownNow(); Executors.newScheduledThreadPool(3).scheduleAtFixedRate( new Runnable(){ @Override public void run() { System.out.println("bombing!"); }}, 6, 2, TimeUnit.SECONDS);//6s后炸,以后每2s炸 }}