如何有效取消周期性的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;
}
So, using this link as a reference, can anyone suggest a more elegant solution for canceling a periodic ScheduledExecutorService task?
Here's an example of what I'm currently doing:
// 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;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我建议你使用 int 并自己安排任务。
I suggest you use int and schedule the task yourself.