gpt4 book ai didi

Java计划任务在后台以一定间隔重复运行

转载 作者:行者123 更新时间:2023-12-02 01:52:38 26 4
gpt4 key购买 nike

我希望我的主程序继续执行,而 updateRecord 方法在后台运行。 updateRecord 方法在一定时间间隔内不断更新记录的到期时间。

这是我的 updateRecord 方法。

    public void updateRecord(LeaderRecord leader) {
LeaderRecord record = data.get(leader.getType());
synchronized (this) {
if (leader.getId().equals(record.getId()) || leader.getVersion() == record.getVersion()) {
Runnable runnable = () -> {
calendar.add(Calendar.SECOND, timeLimit);
leader.setExpiryTime(new Timestamp(calendar.getTime().getTime()));
data.put(leader.getType(), leader);
System.out.println(record.getExpiryTime());
};
ScheduledExecutorService service = Executors.newScheduledThreadPool(1);
service.scheduleAtFixedRate(runnable, 0, timeLimit, TimeUnit.SECONDS);
}
}
}

此代码在打印一次时间后停止运行。我应该怎么做才能使其在主应用程序执行时保持在后台运行?预先感谢您!

最佳答案

考虑使用计时器。它们应该就是您正在寻找的。它与您正在做的事情类似,但它内置了您正在寻找的所有功能。

public static void updateRecord(LeaderRecord leader) {
long timeLimit = 5000;//ms
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
calendar.add(Calendar.SECOND, timeLimit);
leader.setExpiryTime(new Timestamp(calendar.getTime().getTime()));
data.put(leader.getType(), leader);
System.out.println(record.getExpiryTime());
}
}, 0, timeLimit);// Delay, Time Between in ms
}

我希望这会有所帮助。

关于Java计划任务在后台以一定间隔重复运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52752531/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com