ScheduledThreadPoolExecutor executeNow();

时间:2014-07-27 19:23:15

标签: java android

当按下按钮时,如何告诉ScheduledThreadPoolExecutor(让他们叫他sht)执行他的任务?

例如,如果我有这样的事情:

sht.scheduleAtFixedRate(new Runnable() {
    @Override
    public void run() {
         method1();
         method2();
         method3();
    }
}, 0, 5, TimeUnit.MINUTES);

sht内部的方法将每5分钟执行一次,但我想要做的就是运行它们"现在" 。我不能仅仅因为某些原因而调用这些方法。

我需要这样的东西:

sht.executeNow();

1 个答案:

答案 0 :(得分:0)

execute()接口的基本Executor方法允许排队任务以立即执行。您应该保留对预定Runnable任务的引用,并提交它以便在单击按钮时立即执行。

如果您想在单击按钮后重置计划,可以通过Runnable方法删除之前的remove()任务并重新安排它来执行此操作。在这种情况下,不需要execute()方法,因为您可以通过在调度方法中指定初始延迟值0来实现立即执行。

考虑到您的简单用例,您可能希望使用Timer代替ScheduledThreadPoolExecutor,因为它为您尝试的内容提供了更简单的API。实际上,除非您确实需要在另一个Thread中运行这些任务,否则应该使用Handler,它将管理任务的调度和执行,而无需启动新的Thread