小编典典

Java中Runnable和Callable接口之间的区别

java

在Java中设计并发线程时,使用RunnableCallable接口有什么区别,为什么你要选择一个?


阅读 968

收藏
2020-03-16

共2个答案

小编典典

Callable接口与Runnable相似,两者均适用于其实例可能由另一个线程执行的类。但是,Runnable不会返回结果,也不能引发已检查的异常。

2020-03-16
小编典典

Runnable和的应用有什么区别Callable?区别仅在于其中包含return参数Callable吗?

基本上是。请参阅此问题的答案。和的javadocCallable

如果两者Callable都能做到,Runnable那么有什么需要呢?

因为Runnable界面不能做所有能做的事Callable

Runnable自Java 1.0以来一直存在,但Callable仅在Java 1.5中引入…来处理Runnable不支持的用例。从理论上讲,Java团队可以更改该Runnable.run()方法的签名,但这将破坏与1.5版之前的代码的二进制兼容性,因此在将旧的Java代码迁移到更新的JVM时需要重新编码。那是很大的不。Java致力于向后兼容…这一直是Java商业计算的最大卖点之一。

而且,很明显,在某些用例中,任务不需要返回结果或抛出检查异常。对于这些用例,使用Runnable比使用Callable<Void>并返回方法中的dummy(null)值更为简洁call()

2020-03-16