如何用 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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP