Java中使用Callable和FutureTask創建多線程的基本用法


我們先定義一個Callable任務MyCallableTask:

步驟1:創建Callable實現類,並實現call()接口

 
         

package cn.cetc;//包名可自定義

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;


class
CallableTask implements Callable<Integer>{ @Override public Integer call() throws Exception { System.out.println("線程在進行計算"); Thread.sleep(3000); int sum = 0; for(int i=0;i<100;i++) sum += i; return sum; }

//以下是main()代碼,見下面部分 }

步驟2:借助FutureTask執行 

FutureTask類同時實現了兩個接口,Future和Runnable接口,所以它既可以作為Runnable被線程執行,又可以作為Future得到Callable的返回值。

借助FutureTask執行的大體流程是:

    public static void main(String[] args) throws InterruptedException, ExecutionException{  
        FutureTask<Integer> task = new FutureTask<Integer>(new CallableTask());
        // 實質還是以Callable對象來創建、並啟動線程
        new Thread(task , "有返回值的線程").start();
        System.out.println(task.get());
    }

通過futuretask可以得到MyCallableTask的call()的運行結果。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM