首页 > 解决方案 > 保存 Runnable 实现的函数

问题描述

我有这个代码:

new Thread(() -> {

    //do things

}).start();

new Thread(() -> {

    //do same things

}).start();

我知道我可以声明一个包含 lambda 的函数:

Function<Integer, Integer> add = x -> x + 1;

我想让这个函数保存Runnablefrom的实现new Thread

但我不知道在 之间放<>什么Function

标签: javalambdafunctional-interface

解决方案


java.util.Function不能表示Runnable任务,因为函数接受一个参数并返回一些东西,相反,Runnable.run方法不接受任何参数并且什么也不返回。即使您觉得它Runnable在本质上与 a 有点相似Function<Void, Void>,但由于同样的原因,即使这个假设也是错误的。

鉴于这Runnable是一个单一的抽象方法接口(它只有 run 方法),您可以只使用 lambda 表达式来实现它。还要注意,这个 lambda 只是正统匿名内部类的更简洁的语法糖。这是它的外观。

Runnable task = () -> System.out.println("My task");

您可以将此Runnable实例用作程序中的普通Runnable命令。这是一个这样的示例用法。

Thread t = new Thread(task);
t.start();

推荐阅读