import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; /** * Created by chengtao on 17/12/4. * * * 线程池类: * java.util.concurrent.Executors * 常用的方法 * newFixedThreadPool(int nThreads) 创建线程数固定的线程池。 * newCachedThreadPool() 创建线程数不固定的线程池(缓存线程池,线程数随着任务数的变换而变化)。 * newSingleThreadExecutor(int nThreads) 创建单一线程池,唯一的线程死掉以后,会自动创建一个线程池。 * newScheduledThreadPool() 创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。 */ public class Thread0901_ThreadPool { public static void main(String[] args) { //ExecutorService threadPool = Executors.newFixedThreadPool(3); //ExecutorService threadPool = Executors.newCachedThreadPool(); ExecutorService threadPool = Executors.newSingleThreadExecutor(); for(int i=1;i<=10;i++){ final int task = i; threadPool.execute(new Runnable(){ public void run() { for(int j=1;j<=10;j++){ try { Thread.sleep(20); } catch (InterruptedException e) { 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(); 试图停止所有正在执行的活动任务,暂停处理正在等待的任务,并返回等待执行的任务列表。 //threadPool.shutdown; 启动一次顺序关闭,执行以前提交的任务,但不接受新任务。 Executors.newScheduledThreadPool(3).scheduleAtFixedRate( new Runnable(){ public void run() { System.out.println("bombing!"); }}, 6, 2, TimeUnit.SECONDS); } }