java中两任务并行运行_Java并行编程中的“可调用”与“可运行”任务
java中兩任務并行運行
當我們用Java編寫多線程應用程序時,我們傾向于使用“ Runnable ”接口來實現線程類。
您的類必須簡單地實現此接口并覆蓋run方法。
對于瑣碎的用例,我們可以通過調用“ start”方法直接啟動線程,結果將控制流委托給run方法。
但是,在大多數應用程序中,我們最終使用線程池,該線程池管理工作線程并在任務提交到池時促進任務執行。
Java提供了各種各樣的線程池,并且還允許程序員創建自己的線程池實現。
將線程任務提交給池的過程也很標準。
在某些情況下,我們可能希望我們的線程做更多的事情而不是僅僅執行一個任務。
在這種情況下,了解使用Runnable vs Callable的用例很重要。
1.從執行線程返回值
在許多情況下,您可能希望從執行線程返回一個值。
這是“可調用”任務派上用場的地方。
Java ExecutorService API允許接受Callable類型的任務,并返回“ Future”任務。
這對于某些用例可能很有用。
但是,下面給出了使用Callable的更重要的選擇之一。
2.能夠從執行線程中拋出檢查異常
Callable的重要考慮因素之一是程序員能夠從正在執行的線程中引發異常。
這可以從我們的多線程應用程序中處理異常,并可以從異常中正常恢復。
如果我們查看“調用”方法的簽名,就會發現它引發了一個通用異常–
V call()引發異常
3.其他方案
Callable接口實現也可以與FutureTask結合使用。
FutureTask類接受Callable實現。
FutureTask可以提交給線程池執行器,我們可以使用標準的Future API檢索執行結果。
下面的代碼段
public class CallableInsideFutureTask{public static void main(String[] args){ExecutorService executor = Executors.newSingleThreadExecutor();FutureTask<String> myTask = new MyTask(new CallableTest());executor.submit(myTask);try {myTask.get();} catch (Exception ex ) {ex.printStackTrace();}executor.shutdownNow();}}在此示例中, CallableTest類必須實現Callable接口。
如果您喜歡這篇文章,請隨時在LinkedIn上進行連接。
翻譯自: https://www.javacodegeeks.com/2019/04/callable-runnable-tasks-java-concurrent-programming.html
java中兩任務并行運行
總結
以上是生活随笔為你收集整理的java中两任务并行运行_Java并行编程中的“可调用”与“可运行”任务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存memory_limit设置怎么设置
- 下一篇: 大数据 java 代码示例_功能Java