我试图摆脱java调度程序。我正在使用ScheduleExecuterService并将ScheduleFuture对象保存在Hashtable中以便稍后访问。但是如何从ScheduleFuture对象中检索runnableClass?
第二个问题:我想知道下一次运行runnableClass的时间?但我没有找到一个功能。
这是我的代码:
private Hashtable<String,ScheduledFuture<?>> scheduled;
...
String id = "RUNID";
MyScheduledRunnable runnableClass = new MyScheduledRunnable(log)
ScheduledFuture<?> s = scheduledExecutorService.scheduleAtFixedRate(runnableClass, 0, 15, TimeUnit.MINUTES);
scheduled.put(id, s);
... later ...
ScheduledFuture s = scheduled.get("RUNID");
如何从s获取runnableClass? 下次工作时如何获取信息?例如s.nextRun()? 或检查它是否还活着?
也许有些人可以帮助我!
谢谢!
答案 0 :(得分:0)
如何从s获取runnableClass?
如果您没有明确存储它,我不希望这是可能的。
如何在下次运行作业时获取信息?例如s.nextRun()?
ScheduledFuture
扩展了Delayed
接口,该接口具有getDelay(TimeUnit)
method,我期望它可用于获取下一次运行的时间。
或检查它是否还活着?
scheduleAtFixedRate
的Javadoc指定未来只能通过抛出异常(可以使用get()
检索)来终止,方法是使用cancel
方法取消(可以是使用isCancelled()
或终止执行程序(可以使用isTerminated
进行测试)进行测试。