java shutdownNow()然后重新调度ScheduledThreadPoolExecutor:如何?
我正在使用ScheduledThreadPoolExecutor研究按钮单击的调度方法。 如果在执行方法之前再次单击按钮,我希望关闭执行器并重新安排。 我使用boolean和try/catch来实现这一点,但executor似乎只是被关闭了,并没有再次计划
这是我的代码的问题,还是线程处理的本质
下面是我的代码
JAVA
ScheduledTrheadPoolExecutor se = new ScheduledThreadPoolExecutor(1);
se.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardOldestPolicy());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
se.setRemoveOnCancelPolicy(true);
...
if (!clicked) {
se.schedule(runnable, 10, TimeUnit.SECONDS);
clicked = true;
} else {
try {
se.shutdownNow();
se.schedule(runnable, 10, TimeUnit.SECONDS);
} catch (RejectedExecutionExeption e) {
e.printStackTrace();
}
}
# 1 楼答案
首先在顶部初始化的
ScheduledTrheadPoolExecutor se = new ScheduledThreadPoolExecutor(1);
行下方设置se.setExecuteExistingDelayedTasksAfterShutdownPolicy(false);
然后在关闭当前执行器后,重新初始化,如下所示: