import java.util.ArrayList; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; class TaskWithResult implements Callable<String> { private int idw; public TaskWithResult(int id) { this.idw = id; } public String call() throws Exception { return "result of TaskWithResult " + idw; } } public class CallableTest { public static void main(String[] args) throws InterruptedException, ExecutionException { ExecutorService exec = Executors.newCachedThreadPool(); ArrayList<Future<String>> results = new ArrayList<Future<String>>(); //Future 至關因而用來存放Executor執行的結果的一種容器 for (int i = 0; i < 10; i++) { results.add(exec.submit(new TaskWithResult(i))); } for (Future<String> fs : results) { if (fs.isDone()) { System.out.println("Task is ok:"+fs.get()); } else { System.out.println("Future result is not yet complete"); } } exec.shutdown(); } }
Java 併發處理好東西。java