我有一个ScheduledExecutorService时间周期性的几个不同的任务scheduleAtFixedRate(Runnable, INIT_DELAY, ACTION_DELAY, TimeUnit.SECONDS);
我也有一个Runnable与此调度程序不同的用法.当我想从调度程序中删除其中一个任务时,问题就开始了.
有没有办法做到这一点?
我是否正确使用一个调度程序执行不同的任务?实现这个的最佳方法是什么?
因此,使用此链接作为参考,是否有人可以建议更优雅的解决方案来取消定期的ScheduledExecutorService任务?
这是我目前正在做的一个例子:
// do stuff
// Schedule periodic task
currentTask = exec.scheduleAtFixedRate(
new RequestProgressRunnable(),
0,
5000,
TimeUnit.MILLISECONDS);
// Runnable
private class RequestProgressRunnable implements Runnable
{
// Field members
private Integer progressValue = 0;
@Override
public void run()
{
// do stuff
// Check progress value
if (progressValue == 100)
{
// Cancel task
getFuture().cancel(true);
}
else
{
// Increment progress value
progressValue += 10;
}
}
}
/**
* Gets the future object of the scheduled task
* …Run Code Online (Sandbox Code Playgroud) 我有一个定期任务通过Spring安排TaskScheduler.schedule(Runnable, Trigger).
鉴于返回ScheduledFuture,有没有办法检查,如果任务正在当前运行?