gpt4 book ai didi

java - 什么时候应该更喜欢 Callable 而不是 Runnable,为什么?

转载 作者:行者123 更新时间:2023-11-30 08:10:21 24 4
gpt4 key购买 nike

在 SO 上,我发现 CallableRunnable 之间的所有理论上的区别,而且几乎都是相似的。但是,我不明白为什么 Callable在以后的版本中引入? Callable 能够做到的 Runnable 中的差距/缺陷是什么?任何人都可以解释 Callable 是唯一解决方案的场景吗?

最佳答案

Callable 有两个区别。它可以返回一个值或抛出一个已检查的异常。

这在使用 lambda 时会有所不同,因此即使您没有指定要起诉哪个,编译器也必须解决它。

// the lambda here must be a Callable as it returns an Integer
int result = executor.submit(() -> return 2);

// the lambda here must be a Runnable as it returns nothing
executors.submit(() -> System.out.println("Hello World"));

// the lambda here must be a Callable as an exception could be thrown
executor.submit(() -> {
try (FileWriter out = new FileWriter("out.txt")) {
out.write("Hello World\n");
}
return null; // Callable has to return something
});

关于java - 什么时候应该更喜欢 Callable 而不是 Runnable,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31758552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com