当前位置: 首页 > 知识库问答 >
问题:

Java中Runnable和Callable接口的区别

宰父疏珂
2023-03-14

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

共有3个答案

锺离声
2023-03-14

>

  • 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;
    }
    

  • 弘焕
    2023-03-14

    RunnableCallable的应用程序有什么不同。差异是否仅存在于调用中的返回参数?

    基本上是的。看看这个问题的答案。以及可调用的javadoc。

    如果可调用可以完成可运行的所有功能,那么这两种功能都需要什么呢?

    因为Runnable接口无法完成Callable所做的一切!

    Runnable从Java1.0开始就存在了,但是Callable只是在Java1.5中引入的。。。处理Runnable不支持的用例。理论上,Java团队本可以更改Runnable的签名。run()。这是一个巨大的禁忌。Java努力做到向后兼容。。。这是Java在商业计算方面最大的卖点之一。

    而且,很明显,有些用例中任务不需要返回结果或抛出检查过的异常。对于这些用例,使用Runnable比使用Callable更简洁

    宦文柏
    2023-03-14

    请看这里的解释。

    调用接口类似于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查找,但是有什么合适的方法怎么做呢? 问题答案: 您必须给容器