java - Java用法,没用过,不知道怎么找相关资料
问题描述
在代码的第 19 行,Callable c = () -> {
符号 -> 是什么意思。它是如何应用的?我不知道该怎么称呼
我知道它应该是接口Callable方法的实现。如果是这样,这种总使用量有什么好处?
package com.example.executor;
import java.util.Date;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
/**
* @author gao peng
* @date 2019/4/18 17:56
*/
public class ExecutorserviceDemo4 {
public static void main(String[] args) {
ScheduledExecutorService scheduledExecutor = Executors.newScheduledThreadPool(2);
// Callable implementation
Callable<String> c = () -> {
System.out.println("Executed at- " + new Date());
return "Executing task";
};
System.out.println("Time before execution started- " + new Date());
// scheduling tasks with callable as param to be
// executed after a delay of 3 Secs
ScheduledFuture<String> sf = scheduledExecutor.schedule(c, 3, TimeUnit.SECONDS);
try {
System.out.println("Value- " + sf.get());
} catch (InterruptedException | ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
scheduledExecutor.shutdown();
}
}
解决方案
是 Java 8 中引入的一项功能。如果您使用的是 Android Studio 3.0 或更高版本,它应该适合您。
该功能的名称是 Lambda 表达式,如果您打算使用它们,您应该查找并阅读它们。
您可以使用 -> 组合来使用它们。
如果你的 Android Studio 早于 3.0,你应该更新.. 或者使用一个名为 retrolambda 的库(你真的应该更新)
我已经从这个答案