在Java中设计并发线程时,使用Runnable
和Callable
接口有什么区别,为什么要选择其中一个?
>
Callable
需要实现call()
方法,而Runnable
需要实现run()
方法。Callable
可以返回一个值,但Runnable
不能。Callable
可以抛出检查异常,但Runnable
不能。一个Callable
可以与ExecutorService#调用XXX(Collection
public interface Runnable {
void run();
}
public interface Callable<V> {
V call() throws Exception;
}
Runnable
和Callable
的应用程序有什么不同。差异是否仅存在于可调用
中的返回参数?
基本上是的。看看这个问题的答案。以及可调用的javadoc。
如果可调用
可以完成可运行
的所有功能,那么这两种功能都需要什么呢?
因为Runnable
接口无法完成Callable
所做的一切!
Runnable
从Java1.0开始就存在了,但是Callable
只是在Java1.5中引入的。。。处理Runnable
不支持的用例。理论上,Java团队本可以更改Runnable的签名。run()。这是一个巨大的禁忌。Java努力做到向后兼容。。。这是Java在商业计算方面最大的卖点之一。
而且,很明显,有些用例中任务不需要返回结果或抛出检查过的异常。对于这些用例,使用
Runnable
比使用Callable更简洁
请看这里的解释。
可调用接口类似于Runnable,因为两者都是为实例可能由另一个线程执行的类设计的。然而,Runnable不会返回结果,也不能抛出选中的异常。
本文向大家介绍Java中Runnable和Callable接口之间的区别,包括了Java中Runnable和Callable接口之间的区别的使用技巧和注意事项,需要的朋友参考一下 可运行和可调用两个功能接口。实现这些接口的类设计为由另一个线程执行。 可以使用Ruunable启动线程,这是启动新线程的两种方法:一种是通过子类化Thread类,另一种是实现Runnable接口。 线程类没有可调用的构造
本文向大家介绍实现Runnable接口和Callable接口的区别?相关面试题,主要包含被问及实现Runnable接口和Callable接口的区别?时的应答技巧和注意事项,需要的朋友参考一下 如果想让线程池执行任务的话需要实现的Runnable接口或Callable接口。 Runnable接口或Callable接口实现类都可以被ThreadPoolExecutor或ScheduledThreadP
原文链接:Mr.Simple,http://blog.csdn.net/bboyfeiyu/article/details/24851847 Java中存在Runnable、Callable、Future、FutureTask这几个与线程相关的类或者接口,在Java中也是比较重要的几个概念,我们通过下面的简单示例来了解一下它们的作用于区别。 Runnable 其中Runnable应该是我们最熟悉的
本文向大家介绍浅析Java中Runnable和Thread的区别,包括了浅析Java中Runnable和Thread的区别的使用技巧和注意事项,需要的朋友参考一下 线程的起动并不是简单的调用了你的RUN方法,而是由一个线程调度器来分别调用你的所有线程的RUN方法, 我们普通的RUN方法如果没有执行完是不会返回的,也就是会一直执行下去,这样RUN方法下面的方法就不可能会执行了,可是线程里的RUN方法
本文向大家介绍详解Java中Thread 和Runnable区别,包括了详解Java中Thread 和Runnable区别的使用技巧和注意事项,需要的朋友参考一下 Thread 和Runnable 关系 Thread类是接口Runnable的一个实现类。 源码分析 Thread Threa类运行的时候调用start()方法,源代码如下: 调用start()方法,实际运行的是start0方法,方法声
问题内容: Java EE 7中引入了并发实用程序(JSR 236)。 有什么方法可以将我的EJB注入Runnable / Callable对象吗? 具体来说,我想要这样的东西: 带有业务逻辑的ejb 我想在其中注入MyEjb实例的可运行/可调用类 开始新任务的对象 MyTask中的myEjb字段始终为null。我想那里可以帮助JNDI查找,但是有什么合适的方法怎么做呢? 问题答案: 您必须给容器