【问题标题】:Why does java.util.concurrent.RunnableFuture have a run() method?为什么 java.util.concurrent.RunnableFuture 有一个 run() 方法?
【发布时间】:2014-09-25 09:33:42
【问题描述】:

在浏览 JDK 7 时,我发现 java.util.concurrent.RunnableFuture<V> 有一个 run 方法。我想知道在接口中复制相同的运行方法签名有什么意义,因为它已经扩展了Runnable

package java.util.concurrent;

public interface RunnableFuture<V> extends Runnable, Future<V> {
    /**
     * Sets this Future to the result of its computation
     * unless it has been cancelled.
     */
    void run();
}  

【问题讨论】:

    标签: java java.util.concurrent concurrent.futures


    【解决方案1】:

    它在接口中定义,以便他们可以将RunnableFuture-specific JavaDoc 附加到它。没有技术意义。

    【讨论】:

    • 谢谢!这是更有意义的答案。
    【解决方案2】:

    没有提供此类解释的文档。所以我将提供我的意见。

    我认为它没有任何重大意义。想象一下界面世界的样子

    public interface RunnableFuture<V> extends Runnable, Future<V> {
    }
    

    虽然它是完全有效的,但它并没有清楚地表明它的目的。所以在我看来,它只是为了便于理解run() 特定于RunnableFuture 接口的方法而提供的。这样您就知道通过覆盖 run() 方法来放置您的可运行逻辑。

    我能想到的另一点是Runnable 是早期接口之一,如果您看到 run() 方法,它就是

    public abstract void run();
    

    publicabstract 关键字是多余的,因为接口中的方法默认为publicabstract。即兴发挥这可能是原因之一。

    【讨论】:

    • 好吧,如果我们考虑外观和冗余,那么我同意你的看法...... ;)
    • 我的答案也包含了已经被接受的答案。 provided for easy understanding for run() method specific to RunnableFuture interface。无论如何很高兴知道你同意 ;)
    猜你喜欢
    • 1970-01-01
    • 2011-08-29
    • 2017-06-21
    • 2017-11-14
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多