我必须安排一个方法在启动时执行,然后每隔 1 分钟定期执行。
为此我已经这样做了:
public void init(){
loadConfig(); //method which needs to be executed periodically
Timer scheduler = new Timer();
scheduler.scheduleAtFixedRate(loadConfig(),60000,60000);
}
这会产生错误,而且应该会出现错误,因为 scheduleAtFixedRate
的第一个参数的类型为 Runnable
。
我需要建议的是,如何使我的 loadConfig
方法 Runnable
并在我之前执行 loadConfig()
时仍然执行它调度程序启动。
目前代码结构如下:
public class name {
public void init() {
...
}
...
public void loadConfig() {
...
}
}
编辑:这是我已经尝试过的
public void init(){
loadConfig();
Timer scheduler = new Timer();
scheduler.scheduleAtFixedRate(task,60000,60000);
}
final Runnable task = new Runnable() {
public void run() {
try {
loadConfig();
} catch (Exception e) {
e.printStackTrace();
}
}
};
最佳答案
使用以下语法,您可以创建 lambda 表达式,该表达式将计算为 Runnable
类型的对象。当调用该对象的 run
方法时,将调用 loadConfig
方法。
scheduler.scheduleAtFixedRate(() -> loadConfig(), 60, 60, TimeUnit.SECONDS);
Lambda 表达式是 Java 8 的一项新功能。
在本例中,它的工作原理如下:箭头 ->
将表达式转换为 lambda。 ()
是参数列表,它是空的,因为 run
方法没有参数。箭头后面的 loadConfig()
是主体,其工作方式与方法主体相同。
由于 scheduleAtFixedRate
需要一个 Runnable
作为参数,因此它将成为表达式的目标类型,并且 lambda 将成为该类型的对象。
关于java - 安排定期运行方法´,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30839390/