演示Callable Future FutureTask的使用

    get():獲取任務執行結果,如果任務還沒完成(state<=COMPLETING),則會阻塞等待直到任務執行完成;如果任務被取消,則會
拋出CancellationException異常;如果任務執行過程發生異常,則會拋出ExecutionException異常;如果阻塞等待過程中被中斷,
則會拋出InterruptedException異常。
    isDone():判斷任務是否已經完成,如果完成則返回true,否則返回false。任務執行過程中發生異常、任務被取消也屬於任務
已完成(state != NEW)。
    isCancelled():判斷任務是否被取消,如果任務完成前被取消,則返回true,否則返回false(state >= CANCELLED)。

/**
 * 演示Callable Future FutureTask的使用
 */
public class UserFuture {
    private static class UseCallable implements Callable<Integer> {
        private int sum;
        @Override
        public Integer call(){
            System.out.println("Callable子線程開始計算");
            for(int i = 0; i < 101; i++) {
                sum = sum + i;
            }
            System.out.println("Callable子線程計算完成,結果 = " + sum);
            return sum;
        }

    }

    public static void main(String[] args) throws InterruptedException, ExecutionException {
        UseCallable useCallable = new UseCallable();
        FutureTask<Integer> futureTask = new FutureTask<Integer>(useCallable);
        new Thread(futureTask).start();
        System.out.println("Get UseCallable result = "+ futureTask.get());
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章