Java lambda如何替换匿名的新Runnable()呢?

Java lambda如何替换匿名的新Runnable()呢?,java,lambda,runnable,anonymous-class,Java,Lambda,Runnable,Anonymous Class,编写匿名可运行的时,例如: Thread producer = new Thread(new Runnable() { @Override public void run() { // do something } }); IntelliJ建议将其替换为以下lambda: Thread producer = new Thread(() -> { // do something } }); 这同样有效 这到底是怎么

编写匿名可运行的时,例如:

Thread producer = new Thread(new Runnable() {
      @Override
      public void run() {
        // do something
      }
});
IntelliJ建议将其替换为以下lambda:

Thread producer = new Thread(() -> {
       // do something
    }
});
这同样有效

这到底是怎么回事?特别是:

  • 使用的构造函数仍然是
    线程(可运行目标)
    ,但lambda中没有任何内容表明它是可运行的
  • 为什么突然不再需要
    @Override public void run()

  • 如果匿名类只有一个方法,则可以将其实现为lambda表达式。这里作为lambda传递的是
    run
    方法的实现。Lambda表达式使您能够更简洁地表达单个方法类的实例