为啥 java.util.concurrent.RunnableFuture 有一个 run() 方法?
Posted
技术标签:
【中文标题】为啥 java.util.concurrent.RunnableFuture 有一个 run() 方法?【英文标题】: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();
【问题讨论】:
【参考方案1】:它在接口中定义,以便他们可以将RunnableFuture
-specific JavaDoc 附加到它。没有技术意义。
【讨论】:
谢谢!这是更有意义的答案。【参考方案2】:没有提供此类解释的文档。所以我将提供我的意见。
我认为它没有任何重大意义。想象一下界面世界的样子
public interface RunnableFuture<V> extends Runnable, Future<V>
虽然它是完全有效的,但它并没有清楚地表明它的目的。所以在我看来,它只是为了便于理解run()
特定于RunnableFuture
接口的方法而提供的。这样您就知道通过覆盖 run()
方法来放置您的可运行逻辑。
我能想到的另一点是Runnable
是早期接口之一,如果您看到 run() 方法,它就是
public abstract void run();
和public
和abstract
关键字是多余的,因为接口中的方法默认为public
和abstract
。即兴发挥这可能是原因之一。
【讨论】:
好吧,如果我们考虑外观和冗余,那么我同意你的看法...... ;) 我的答案也包含了已经被接受的答案。provided for easy understanding for run() method specific to RunnableFuture interface
。无论如何很高兴知道你同意 ;)以上是关于为啥 java.util.concurrent.RunnableFuture 有一个 run() 方法?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 DataGridView 上的 DoubleBuffered 属性默认为 false,为啥它受到保护?