在 Java EE TimerService 中启动后更改计时器

Changing timer after startup in Java EE TimerService

在这段代码中,我在启动时使用 TimerService 来启动一个每四秒 运行 的任务。启动后需要改频怎么办?

@Startup
@Singleton
public class ProgrammaticScheduler {
 
    @Resource
    TimerService timerService;
 
    @PostConstruct
    public void initialize() {
        timerService.createTimer(0, 4000, "Every four seconds timer");
    }
 
    @Timeout
    public void programmaticTimeout(Timer timer) {
        System.out.println("timeout triggered");
    }
}

使用 Java EE 已经有一段时间了,但我想唯一的选择是取消原来的计时器并创建一个新的。所以在你的 ProgrammaticScheduler:

中添加这样的东西
private Timer timerToChange;

@PostConstruct
public void initialize() {
    timerToChange = timerService.createTimer(0, 4000, "Every four seconds timer");
}

public void changeTimer(**NEW_PARAMS**) {
    timerToChange.cancel();
    timerToChange = timerService.createTimer(**NEW_PARAMS**);
}