为什么java.util.concurrent.RunnableFuture有一个run()方法?

19

我在学习JDK 7时发现,java.util.concurrent.RunnableFuture<V>接口中有一个run方法。我想知道在该接口已经扩展了Runnable的情况下,在接口中重复定义相同的run方法签名的意义是什么。

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();
}  
2个回答

26

为了能够给RunnableFuture特定的JavaDoc附加说明,在接口中定义了它。这没有技术上的重要性。


3
谢谢!这个答案更有意义。 - Maas

0

没有文档提供这样的解释,所以我将提供我的意见。

我认为它没有什么重大意义。想象一下界面世界会是什么样子

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

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

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

public abstract void run();

而且,publicabstract关键字在接口中的方法默认就是publicabstract,所以它们是多余的。改进这一点可能是其中之一的原因。


嗯,如果我们考虑外观和冗余性,那我同意你的看法... ;) - Maas
我的答案还包括已被接受的答案。这是为了方便理解与RunnableFuture接口特定的run()方法。不管怎样,很高兴知道你同意 ;) - Aniket Thakur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接