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

时间:2014-08-02 07:32:00

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

当我浏览JDK 7时,我发现java.util.concurrent.RunnableFuture<V>有一个run方法。我想知道在界面中重复相同的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();
}  

2 个答案:

答案 0 :(得分:25)

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

答案 1 :(得分:1)

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

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

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

虽然它完全有效,但并没有明确说明其目的。因此,我认为只是为了便于理解run()特定于RunnableFuture接口的方法。因此,您知道通过覆盖run()方法来放置可运行的逻辑。

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

public abstract void run();

publicabstract个关键字是多余的,因为默认情况下,接口中的方法是publicabstract。即兴发挥可能是其中一个原因。