Executor来代替上篇文章中显示地创建Thread对象。它在客户端和任务执行之间提供了一个间接层,与客户端直接执行任务不同,这个中介对象将执行任务。
/** * Created by Administrator on 2017/8/31. */public class LiftOff implements Runnable { protected int countDown = 10; private static int taskCount = 0; private final int id = taskCount++; public LiftOff() { } public LiftOff(int countDown) { this.countDown = countDown; } public String status() { return "#" + id + "(" + (countDown > 0 ? countDown : "LiftOff!") + ")"; } @Override public void run() { while (countDown-- > 0) { System.out.print(status()); Thread.yield(); } }}
import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * Created by Administrator on 2017/8/31. */public class MainThread { public static void main(String[] args) { ExecutorService exec = Executors.newCachedThreadPool(); for (int i = 0; i < 5; i++) { exec.execute(new LiftOff()); } exec.shutdown(); System.out.print("等待发射\r\n"); }}
输出结果:
exec.shutdown()可以防止新任务被提交给这个Executor