当按下按钮时,如何告诉ScheduledThreadPoolExecutor(让他们叫他sht)执行他的任务?
例如,如果我有这样的事情:
sht.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
method1();
method2();
method3();
}
}, 0, 5, TimeUnit.MINUTES);
sht内部的方法将每5分钟执行一次,但我想要做的就是运行它们"现在" 。我不能仅仅因为某些原因而调用这些方法。
我需要这样的东西:
sht.executeNow();
答案 0 :(得分:0)
execute()
接口的基本Executor
方法允许排队任务以立即执行。您应该保留对预定Runnable
任务的引用,并提交它以便在单击按钮时立即执行。
如果您想在单击按钮后重置计划,可以通过Runnable
方法删除之前的remove()
任务并重新安排它来执行此操作。在这种情况下,不需要execute()
方法,因为您可以通过在调度方法中指定初始延迟值0来实现立即执行。
考虑到您的简单用例,您可能希望使用Timer
代替ScheduledThreadPoolExecutor
,因为它为您尝试的内容提供了更简单的API。实际上,除非您确实需要在另一个Thread
中运行这些任务,否则应该使用Handler
,它将管理任务的调度和执行,而无需启动新的Thread