如何使runnable提前终止

时间:2014-04-14 03:09:33

标签: java runnable

我有一个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的情况下实现这一目标。

1 个答案:

答案 0 :(得分:3)

schedule(...)方法应返回Future个对象。 Future API具有cancel(...)方法。

所以要实现你想要做的事情:将Future对象保存在某处,然后在5秒后调用cancel。请注意,可以取消已经运行的未来。