计划在定期时间运行方法

时间:2015-06-15 07:19:42

标签: java methods timer scheduler runnable

我必须安排一个方法在开始时执行,之后每隔1分钟安排一次。

为此我做了这个:

string

这是错误,因为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() {
        ...
    }
}

2 个答案:

答案 0 :(得分:4)

使用以下语法,您可以创建一个lambda表达式,该表达式将计算为Runnable类型的对象。当调用该对象的run方法时,将调用loadConfig方法。

scheduler.scheduleAtFixedRate(() -> loadConfig(), 60, 60, TimeUnit.SECONDS);

Lambda表达式是一种新的Java 8功能。

在这种情况下,它的工作原理如下:箭头->将表达式转换为lambda。 ()是参数列表,它是空的,因为run方法没有参数。箭头后面的loadConfig()是正文,其工作方式与方法正文相同。

由于scheduleAtFixedRate期望Runnable作为参数,这将是表达式的目标类型,而lambda将成为该类型的对象。

答案 1 :(得分:1)

由于Runnablean interface,您需要提供实现该接口的对象。最简单的方法(不一定是最干净的)就是编写一个实现该接口的匿名内部类。

在编写该对象时,您将看到必须实现run()方法。在该方法中,您只需调用周围对象的loadConfig()方法即可。

相关问题