Java執行緒-執行緒池-帶返回值
阿新 • • 發佈:2020-11-16
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任務返回的內容