如何有效地取消定期的ScheduledExecutorService任务
因此,使用此链接作为参考,任何人都可以提出更优雅的解决方案来取消定期的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
* @return Future object
*/
public Future<?> getFuture()
{
return currentTask;
}
回答:
我建议您使用int并自己安排任务。
executor.schedule(new RequestProgressRunnable(), 5000, TimeUnit.MILLISECONDS);class RequestProgressRunnable implements Runnable {
private int count = 0;
public void run() {
// do stuff
// Increment progress value
progressValue += 10;
// Check progress value
if (progressValue < 100)
executor.schedule(this, 5000, TimeUnit.MILLISECONDS);
}
}
以上是 如何有效地取消定期的ScheduledExecutorService任务 的全部内容, 来源链接: utcz.com/qa/433952.html