问个多线程Executors的小问题
我在做Thinking In Java第四版最后一章第三个练习
我写的是:
import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class Ex3{ public static void main(String[] args) { System.out.println("------Cached Pool------"); ExecutorService execCached = Executors.newCachedThreadPool(); execCached.execute(new Imex31()); execCached.execute(new Imex32()); execCached.execute(new Imex33()); execCached.shutdown(); System.out.println("------Fixed Pool------"); ExecutorService execFixed = Executors.newFixedThreadPool(3); execFixed.execute(new Imex31()); execFixed.execute(new Imex32()); execFixed.execute(new Imex33()); execFixed.shutdown(); System.out.println("------Single Thread------"); ExecutorService execSingle = Executors.newSingleThreadExecutor(); execSingle.execute(new Imex31()); execSingle.execute(new Imex32()); execSingle.execute(new Imex33()); execSingle.shutdown(); /*Thread t1 = new Thread(new Imex31()); Thread t2 = new Thread(new Imex32()); Thread t3 = new Thread(new Imex33()); t1.start(); t2.start(); t3.start();*/ }}class Imex31 implements Runnable{ public Imex31() { System.out.println("Constructor 1 begin"); } public void run() { for (int i = 1; i < 4; i++) { System.out.println("In the run ex1 " + i); Thread.yield(); } System.out.println("ex1 complete"); return; }}class Imex32 implements Runnable{ public Imex32() { System.out.println("Constructor 2 begin"); } public void run() { for (int i = 1; i < 4; i++) { System.out.println("In the run ex2 " + i); Thread.yield(); } System.out.println("ex2 complete"); return; }}class Imex33 implements Runnable{ public Imex33() { System.out.println("Constructor 3 begin"); } public void run() { for (int i = 1; i < 4; i++) { System.out.println("In the run ex3 " + i); Thread.yield(); } System.out.println("ex3 complete"); return; }}