【发布时间】:2018-10-11 05:01:00
【问题描述】:
我希望我的主程序在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);
}
}
}
此代码在打印一次时间后停止运行。 我应该怎么做才能让它在主应用程序执行时继续在后台运行? 提前谢谢!
【问题讨论】:
-
您可以使用 TimerTask,那里有 scheduleAtFixedRate 方法,您可以在其中指定您的任务和定期执行时间
标签: java multithreading