import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; /* * 1、建立執行線程的方式三:實現 Callable 接口。 相較於實現 Runnable 接口的方式,方法能夠有返回值,而且能夠拋出異常。 * * 2、執行 Callable 方式,須要 FutureTask 實現類的支持,用於接收運算結果。 FutureTask 是 Future 接口的實現類 */ public class TestCallable { public static void main(String[] args) { ThreadDemo td = new ThreadDemo(); //1.執行 Callable 方式,須要 FutureTask 實現類的支持,用於接收運算結果。 FutureTask<Integer> result = new FutureTask<>(td); new Thread(result).start(); //2.接收線程運算後的結果 try { Integer sum = result.get(); //FutureTask 可用於 閉鎖 System.out.println(sum); System.out.println("------------------------------------"); } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); } } } class ThreadDemo implements Callable<Integer>{ @Override public Integer call() throws Exception { int sum = 0; for (int i = 0; i <= 100000; i++) { sum += i; } return sum; } } /*class ThreadDemo implements Runnable{ @Override public void run() { } }*/