是否应该将Callable优先于Runnable?

是否应该将Callable优先于Runnable?,第1张

是否应该将Callable优先于Runnable?

两者都有其用途,并且都由java.util.concurrent中的Executor框架支持。Runnable已经存在了更长的时间,但是它仍然在使用并且不被阻止。

可调用程序可以抛出异常并返回值,这使它们成为更好的抽象方法,用于承载结果的任务(例如,从网络中获取资源,执行昂贵的值计算等)[摘自Goetz的 Java
Concurrency in Practice
布洛赫(Bloch)等。等,关于Java并发的标准工作]。

因此,如果您正在设计API,建议您尽可能使用Callables。如果您确定任务不会返回值并且不会引发异常,那么Runnable也是一个有效的选择。这里没有黑色和白色,尤其是因为Runnable可以轻松地包装在Callables中,反之亦然。

另外,请注意您的Callable实现无需声明

throwsException
;Callable本身声明它的事实仅是允许实现者抛出任何检查的异常。但是,仅依赖Callable接口的Callable调用者将不得不编写异常处理代码。
还要注意,Callables不需要返回值;您只需声明您的Callable即可返回
Void
(大写的’
V
‘)。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5142662.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存