如何定义传入lambda表达式时将调用哪个重载方法?

时间:2016-08-10 16:36:06

标签: java java-8 overloading

ExecutorService有两个重载方法

  1. ExecutorService.submit(Callable)
  2. ExecutorService.submit(Runnable)
  3. 在编写以下代码时创建了类RunnableCallable的实例。

    executor.submit(()->System.out.println("Running in : " + Thread.currentThread().getName()));
    

    如果这是Runnable的实例,如何在使用lambda表达式时将Callable的实例或反之亦然传递给ExecutorService

2 个答案:

答案 0 :(得分:4)

由于你的lambda没有返回Callable.call()所需的值,所以它是Runnable

答案 1 :(得分:1)

要拥有一个Callable lambda,你必须返回一些东西。

SELECT * FROM (SELECT Dense_Rank () Over (ORDER BY Sal ASC) AS Rnk, Emp.* FROM Emp) WHERE
Rnk=5;