java - 在 Java EE TimerService 中启动后更改计时器
问题描述
在这段代码中,我使用TimerService
on startup 来启动每四秒运行一次的任务。如果我需要在启动后更改频率怎么办?
@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**);
}
推荐阅读
- java - 无法动态添加 log4j2 appender
- android - 将 textChangedListener 添加到 TextInputEditText
- c++ - std::regex 用于将由冒号分隔的字符串解析为不同的组
- ios - iOS应用打开后立即崩溃
- python - Flask + gevent:可能的套接字泄漏(处于 CLOSE_WAIT 状态)
- java - 如何将用户输入保存在内部存储中(android studio)
- arduino - arduino-uno 怎么知道它只有一个串口?
- python - 熊猫数据框的几个字典列表
- grep - 如何grep空格之间的完整单词?
- python - 使用 python 请求 Foursquare API 的问题