更新時間:2022-06-20 10:25:26 來源:動力節(jié)點 瀏覽2008次
動力節(jié)點小編給大家舉一個如何返回線程值的示例。簡單描述示例的步驟:
我們已經(jīng)實現(xiàn)了兩個Java類,RetDouble它們RetInt都實現(xiàn)了Callable,第一個使用作為參數(shù) a Double,第二個使用作為參數(shù) an Integer。它們都覆蓋了call()Callable 的方法,第一個返回一個Double值,而第二個返回一個Integer.
我們使用Executors 的API方法創(chuàng)建一個ExecutorService。該方法返回一個線程池,該線程池重用在共享無界隊列上運行的固定數(shù)量的線程。newFixedThreadPool(int nThreads)
ExecutorService對兩個 Callables 使用其 API 方法,以便提交一個返回值的任務以供執(zhí)行,并返回兩個代表任務未決結(jié)果的 Future對象。submit(Callable task)
為了獲取 Future 對象的值,我們可以使用它們的get()API 方法,在必要時等待計算完成,然后檢索結(jié)果。
最后 ExecutorService 使用其shutdown()API 方法啟動有序關(guān)閉,其中執(zhí)行之前提交的任務,但不會接受新任務。
讓我們看一下下面的代碼片段:
包 com.javacodegeeks.snippets.core;
導入 java.util.concurrent.Callable;
導入 java.util.concurrent.ExecutorService;
導入 java.util.concurrent.Executors;
導入 java.util.concurrent.Future;
公共類 RetVal {
公共靜態(tài) void main(String args[]) 拋出異常 {
ExecutorService 服務 = Executors.newFixedThreadPool(3);
Future<Double> retdouble = service.submit(new RetDouble());
Future<Integer> retInt = service.submit(new RetInt());
System.out.println(retdouble.get());
System.out.println(retInt.get());
service.shutdown();
}
}
類 RetDouble 實現(xiàn) Callable<Double> {
RetDouble() {
}
@覆蓋
公共雙調(diào)用(){
返回 2.0;
}
}
類 RetInt 實現(xiàn) Callable<Integer> {
RetInt() {
}
@覆蓋
公共整數(shù)調(diào)用(){
返回 1;
}
}
輸出:
2.0
1
這是一個如何在 Java 中返回 Thread 值的示例。如果大家想了解更多相關(guān)知識,可以關(guān)注一下動力節(jié)點的Java多線程編程,里面有更豐富的知識等著大家去學習,希望對大家能夠有所幫助。