功能界面,什么都不带,什么都不返回

dea*_*mon 123 java function java-8

JDK中是否有标准的功能接口,什么都不带,什么都不返回?我找不到一个.类似于以下内容:

@FunctionalInterface
interface Action {
  void execute();
}
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 173

Runnable怎么样:

@FunctionalInterface
public interface Runnable {
    /**
     * When an object implementing interface <code>Runnable</code> is used
     * to create a thread, starting the thread causes the object's
     * <code>run</code> method to be called in that separately executing
     * thread.
     * <p>
     * The general contract of the method <code>run</code> is that it may
     * take any action whatsoever.
     *
     * @see     java.lang.Thread#run()
     */
    public abstract void run();
}
Run Code Online (Sandbox Code Playgroud)

  • FWIW ...虽然它满足功能要求,但听起来不是很语义,Runnable通常与创建线程相关联.使用doWork方法的一个简单的Worker功能界面本来不错.编辑:哎呀:http://stackoverflow.com/questions/27973294/function-with-no-args-and-no-return-type-void-in-java-8?lq=1#comment44339647_27973294 (23认同)
  • 我以这种方式使用了'Runnable`,然后有人看到了这个Runnable,并想到了"runnable,aha,threads"并编辑了代码并分叉了一个线程.这导致了一个错误.所以现在我不使用`Runnable`作为回调.相关问题(好吧,答案):http://stackoverflow.com/a/30183786/694469 (10认同)
  • 引用[javadoc](https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html):`Runnable接口应该由其实例要执行的任何类实现通过一个线程.我不建议使用`Runnable`只是为了没有参数,void返回功能接口. (10认同)
  • 对,就是那样!我忘记了旧的接口,只在[java.util.function]中查看(http://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html) . (9认同)
  • 嗯,界面中的`public abstract`?Tisk tisk,JDK人!(之前从未注意过.) (8认同)
  • 我认为它曾经是[强制性的一次](http://stackoverflow.com/questions/7202616/java-abstract-interface). (2认同)
  • java9中引入的Optional.ifPresentOrElse将一个Runnable作为第二个参数,没有任何并发​​语义,所以官方的观点似乎是这样使用Runnable并没有什么问题 (2认同)