"Runnable::run" - 这是如何创建一个 Executor 实例的?

T.R*_*.R. 7 java executorservice executor runnable java-8

我正在开发一个项目,其中以下行用于创建测试 Executor 成员变量实例:

private Executor executor = Runnable::run;

代码运行和编译,但我不明白如何Runnable::run创建一个实例,Executor因为它们是不同的接口。

有谁能解释一下吗?特别是:

  • Runnable 的实现从何而来?
  • 它如何分配给Executor实现(因为Executor是不同的接口)?
  • 什么样的Executor被创造?例如单线程或池
  • 在 Java 8 之前这将如何编写?

谢谢。

Eug*_*ene 5

Executor是一个@FunctionalInterface

 public interface Executor {
     void execute(Runnable command);
 }
Run Code Online (Sandbox Code Playgroud)

您可以像这样重写它以更好地理解它:

 Executor executor = (Runnable r) -> r.run(); // or Runnable::run
Run Code Online (Sandbox Code Playgroud)

  • @TR `executor` 本质上是一个函数。你给它一个 runnable 来运行。这就是实现的来源。 (2认同)