持有 Runnable 实现的函数
Function which hold implementation of Runnable
我有这个代码:
new Thread(() -> {
//do things
}).start();
new Thread(() -> {
//do same things
}).start();
我知道我可以声明一个包含 lambda 的函数:
Function<Integer, Integer> add = x -> x + 1;
我想让这个函数保持 new Thread
的 Runnable
的实现。
但是我不知道在 <>
和 Function
之间放什么。
java.util.Function
不能表示 Runnable
任务,因为函数接受一个参数和 returns 一些东西,相反 Runnable.run
方法不接受任何参数并且returns 没什么。即使你觉得 Runnable
在本质上与 Function<Void, Void>
有点相似,但由于同样的原因,即使这个假设也是错误的。
鉴于Runnable
是一个单一的抽象方法接口(它只有运行方法),你只能用lambda表达式来实现它。另请注意,此 lambda 只是对正统匿名内部 类 的一种更简洁的语法糖。这是它的样子。
Runnable task = () -> System.out.println("My task");
您可以在您的程序中将此 Runnable
实例用作普通 Runnable
命令。这是一个这样的用法示例。
Thread t = new Thread(task);
t.start();
我有这个代码:
new Thread(() -> {
//do things
}).start();
new Thread(() -> {
//do same things
}).start();
我知道我可以声明一个包含 lambda 的函数:
Function<Integer, Integer> add = x -> x + 1;
我想让这个函数保持 new Thread
的 Runnable
的实现。
但是我不知道在 <>
和 Function
之间放什么。
java.util.Function
不能表示 Runnable
任务,因为函数接受一个参数和 returns 一些东西,相反 Runnable.run
方法不接受任何参数并且returns 没什么。即使你觉得 Runnable
在本质上与 Function<Void, Void>
有点相似,但由于同样的原因,即使这个假设也是错误的。
鉴于Runnable
是一个单一的抽象方法接口(它只有运行方法),你只能用lambda表达式来实现它。另请注意,此 lambda 只是对正统匿名内部 类 的一种更简洁的语法糖。这是它的样子。
Runnable task = () -> System.out.println("My task");
您可以在您的程序中将此 Runnable
实例用作普通 Runnable
命令。这是一个这样的用法示例。
Thread t = new Thread(task);
t.start();