Java:ScheduleFuture getClass并在下次运行时获取信息?

时间:2015-02-23 20:41:00

标签: java scheduler

我试图摆脱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()? 或检查它是否还活着?

也许有些人可以帮助我!

谢谢!

1 个答案:

答案 0 :(得分:0)

  

如何从s获取runnableClass?

如果您没有明确存储它,我不希望这是可能的。

  

如何在下次运行作业时获取信息?例如s.nextRun()?

ScheduledFuture扩展了Delayed接口,该接口具有getDelay(TimeUnit) method,我期望它可用于获取下一次运行的时间。

  

或检查它是否还活着?

scheduleAtFixedRate的Javadoc指定未来只能通过抛出异常(可以使用get()检索)来终止,方法是使用cancel方法取消(可以是使用isCancelled()或终止执行程序(可以使用isTerminated进行测试)进行测试。