我有一个runnable,下面的代码,每当它在10秒内被调用它应该做什么。
CoresManager.slowExecutor.schedule(new Runnable() {
@Override
public void run() {
try {
if (isAtWildSafe()) {
player.sm("This area is now safe for you.");
player.setCanPvp(false);
player.safeWait = false;
removeIcon();
}
} catch (Throwable e) {
Logger.handle(e);
}
}
}, 10, TimeUnit.SECONDS);
但是,让我们说5秒已经过去了,我想取消runnable才能完成它的动作。如何在不取消所有活动的runnable的情况下实现这一目标。
答案 0 :(得分:3)
schedule(...)
方法应返回Future
个对象。 Future
API具有cancel(...)
方法。
所以要实现你想要做的事情:将Future
对象保存在某处,然后在5秒后调用cancel
。请注意,可以取消已经运行的未来。