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