import java.util.concurrent.Callable; import java.util.concurrent.Executors; import java.util.concurrent.ExecutorService; public class ExecutorTest6_1 { public ExecutorTest6_1() { ExecutorService e = Executors.newFixedThreadPool(3); System.out.println("Initial Thread Pool:"); ConcurrentUtils.listThread(); for (int i = 0; i < 5; i++) { e.execute(new RunnableTask("Task" + i)); } try { Thread.sleep(5000L); } catch (InterruptedException ex) { ex.printStackTrace(); } System.out.println("Processed Threads:"); ConcurrentUtils.listThread(); e.shutdown(); System.out.println("Terminating Threads:"); ConcurrentUtils.listThread(); } class RunnableTask implements Runnable { private String name; public RunnableTask(String name) { this.name = name; } public void run() { System.out.println(name + " Starts."); try { Thread.sleep(1000L); } catch (InterruptedException ex) { System.out.println(name + " is Canceled"); return; } System.out.println(name + " is Done."); } } public static void main(String[] args) { new ExecutorTest6_1(); } }