package callableAndFuture;import java.util.concurrent.Callable;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;public class CallableAndFuture { public static class MyCallable implements Callable{ public int flag = -1; public MyCallable(int flag) { this.flag = flag; } @Override public String call() throws Exception { if (flag == 0) { return "flag = 0"; } else if (flag == 1) { try { while (true) { System.out.println("loop......"); Thread.sleep(2000); } } catch (InterruptedException e) { System.out.println("Interrupted!!!"); } return "false"; } else { throw new IllegalStateException("bad flag value....."); } } } public static void main(String... args) { MyCallable c1 = new MyCallable(0); MyCallable c2 = new MyCallable(1); MyCallable c3 = new MyCallable(2); ExecutorService es = Executors.newFixedThreadPool(3); try { Future f1 = es.submit(c1); System.out.println("task1: " + f1.get()); Future f2 = es.submit(c2); Thread.sleep(6000); System.out.println("task2 cancel: " + f2.cancel(true)); Future f3 = es.submit(c3); System.out.println("task3: " + f3.get()); } catch (Exception e) { e.printStackTrace(); } es.shutdown(); }}
在这仅仅是做个记录,详情请看: