[英]How to make a runnable terminate early
我有一個可運行的代碼,下面的代碼,只要在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秒鍾過去了,我想取消可運行對象,然后再執行操作。 我如何在不取消所有活動可運行對象的情況下實現這一目標。
schedule(...)
方法應返回一個Future
對象。 Future
API具有cancel(...)
方法。
因此,要實現您要執行的操作:將Future
對象保存在某個位置,然后在5秒鍾后對其調用cancel
。 請注意,可以取消已經運行的將來。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.