在 Concurrency Interest 链接中,有一段代码如下:-
exec.schedule( ()-> System.out.println("done"),
1, TimeUnit.SECONDS );
()->是什么意思?
我在Eclipse中检查过,它不允许。但是线程作者的意图是什么?
exec.schedule( ()-> System.out.println("done"),
1, TimeUnit.SECONDS );
()->是什么意思?
我在Eclipse中检查过,它不允许。但是线程作者的意图是什么?
这是来自JDK8的Lambda语法。
它与以下语法非常相似(但不完全相同):
exec.schedule(new Runnable() {
public void run() {
System.out.println("done");
}
}, 1, TimeUnit.SECONDS);
ScheduledThreadPoolExecutor#exec(..)
方法需要一个Runnable
参数。Runnable
是一个功能性接口,因为它只包含一个抽象方法。因此,编译器可以推断您正在使用lambda定义一个新的Runnable
实例。
()
之间的部分是run()
方法的参数,即没有参数。->
后面的部分是方法的主体。
Runnable#run()
不带参数。 - Sotirios Delimanolis