1. 程式人生 > 實用技巧 >Java執行緒-執行緒池-帶返回值

Java執行緒-執行緒池-帶返回值

Java5之前,執行緒是沒有返回值的。Java5之後,可以寫有返回值的任務了。
有返回值的任務必須實現Callable介面,沒有返回值的任務實現Runnable介面。
執行Callable介面後,可以獲得一個Future的一個物件,通過Feture的get方法就能獲得返回的Object資料了。
程式碼如下:

public class ThreadExtend_Pool_Return_Value {

    public static void main(String args[]) throws ExecutionException, InterruptedException {
        //建立一個執行緒池
        ExecutorService executorService= Executors.newFixedThreadPool(2);
        //建立有兩個返回值的執行緒
        Callable callable1=new CallableImpl("callable1");
        Callable callable2=new CallableImpl("callable2");
        //執行任務並獲取future物件
        Future future1=executorService.submit(callable1);
        Future future2=executorService.submit(callable2);
        //從future獲取返回值,並輸出到控制檯
        System.out.println(">>>>"+future1.get().toString());
        System.out.println(">>>>"+future2.get().toString());
        //關閉執行緒池
        executorService.shutdown();
    }
}
/**
 * 有返回值的執行緒需要實現Callable介面
 */
class CallableImpl implements Callable{
    private String oid;
    CallableImpl(String oid){
        this.oid=oid;
    }
    @Override
    public Object call(){
        return this.oid+"任務返回的內容";
    }
}

執行後,結果如下:

>>>>callable1任務返回的內容
>>>>callable2任務返回的內容