如何用 Java 中的 lambda 表示式編寫 Callable?


一個Callable 介面在 java.util.concurrent 包中定義。一個Callable 物件返回的是一個執行緒計算的結果,這與一個Runnable 介面相反,後者只能執行該執行緒。Callable物件返回Future 物件,該物件為一個執行緒執行的任務提供監視進度的方法。Future 物件用於檢查Callable 介面狀態並在執行緒完成任務後從Callable 中獲取結果。

在下面的例子中,我們可以將Callable 介面寫成一個lambda 表示式。

示例

import java.util.concurrent.*;

public class LambdaCallableTest {
   public static void main(String args[]) throws InterruptedException {
      ExecutorService executor = Executors.newSingleThreadExecutor();
      Callable c = () -> {   // Lambda Expression
         int n = 0;
         for(int i = 0; i < 100; i++) {
            n += i;
         }
         return n;
      };
      Future<Integer> future = executor.submit(c);
      try {
         Integer result = future.get(); //wait for a thread to complete
         System.out.println(result);
      } catch(ExecutionException e) {
         e.printStackTrace();
      }
      executor.shutdown();
   }
}

輸出

4950

更新日期:2020-07-13

6K+ 瀏覽

開啟你的 職業

透過完成課程獲得認證

開始
廣告
© . All rights reserved.