package com.xh; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingDeque; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; public class ThreadDemo03 { public static void main(String[] args) { //下面的都是从ThreadPoolExecutor构造出来的 ThreadPoolExecutor tp = new ThreadPoolExecutor(10, 20, 60, TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>()); for(int i = 0;i<10;i++) { int t = i; tp.execute(new Runnable() { @Override public void run() { // TODO Auto-generated method stub System.out.println("ThreadPoolExcutor创建的"+Thread.currentThread().getName()+"num=:"+t); } }); } //newcachedThreadPool 缓存线程池 ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); for(int i = 0; i < 10; i++) { final int index = i; try { Thread.sleep(index*1000); } catch (InterruptedException e) { e.printStackTrace(); } cachedThreadPool.execute(new Runnable () { public void run () { System.out.println(index); } }); } //定长线程池 ExecutorService fixedThreadPool = Executors.newFixedThreadPool(2); for(int i = 0; i < 10; i++) { final int index = i; fixedThreadPool.execute(new Runnable () { public void run () { System.out.println(index); try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); } //定长线程池支持定时和周期性任务 ScheduledExecutorService scheduleThreadPool = Executors.newScheduledThreadPool(5); scheduleThreadPool.schedule(new Runnable() { public void run() { System.out.println("delay 3 seconds"); } }, 3, TimeUnit.SECONDS); //单线程化线程池 ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor(); for(int i = 0; i < 10; i++) { final int index = i; singleThreadExecutor.execute(new Runnable() { public void run() { try { System.out.println(index); Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } }); } } }
原文:https://www.cnblogs.com/mzxx/p/11350230.html