java - 保存 Runnable 实现的函数

标签 java lambda functional-interface

我有这个代码:

new Thread(() -> {

    //do things

}).start();

new Thread(() -> {

    //do same things

}).start();

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

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

我想让这个函数来保存 Runnable 的实现来自new Thread .

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

最佳答案

java.util.Function不能代表Runnable任务,因为 Function 接受一个参数并返回一些东西,反之 Runnable.run方法不接受任何参数并且不返回任何内容。即使你觉得Runnable本质上有点类似于 Function<Void, Void> ,由于同样的原因,即使这个假设也是错误的。

鉴于Runnable是一个单一的抽象方法接口(interface)(它只有 run 方法),您只需使用 lambda 表达式即可实现它。另请注意,这个 lambda 只是正统匿名内部类的更简洁的语法糖。这是它的样子。

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

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

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

关于java - 保存 Runnable 实现的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58118658/

相关文章:

java-8 - 方法引用 - 将函数传递给具有消费者参数的方法

java - 以线程安全的方式缓存preparestatement?

java - 如何将数字串到两个特定的字符串

java - 将代码重构为泛型和函数式接口(interface)

c# - 如何根据目标属性名称在 Automapper 中执行字符串查找?

c++ - 将 lambda 推送到 C++ STL 队列导致段错误

java - 参数返回 void 的可调用/可运行/函数?

java - String.format 的语法在 IDEA 中如何实现可识别?

java - 如何序列化请求?

c# - LINQ-To-Entity(LINQ to Entities不支持指定类型成员 '')