如何用 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
广告