拥有Runnable实现的函数

Kun*_*Lun 8 java lambda functional-interface

我有以下代码:

new Thread(() -> {

    //do things

}).start();

new Thread(() -> {

    //do same things

}).start();
Run Code Online (Sandbox Code Playgroud)

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

Function<Integer, Integer> add = x -> x + 1;
Run Code Online (Sandbox Code Playgroud)

我想使此函数保留Runnablefrom的实现new Thread

但我不知道该怎么放之间<>Function

Rav*_*ala 5

java.util.FunctionRunnable之所以不能代表任务,是因为Function接受了一个参数并返回了某些内容,相反,Runnable.runmethod则没有了任何参数并且不返回任何内容。即使您觉得Runnable本质上与相似Function<Void, Void>,即使由于相同的原因,该假设也是错误的。

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

Runnable task = () -> System.out.println("My task");
Run Code Online (Sandbox Code Playgroud)

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

Thread t = new Thread(task);
t.start();
Run Code Online (Sandbox Code Playgroud)