我有:
private final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();运行一个可运行的任务:
executorService.scheduleAtFixedRate(task, 0, 1, TimeUnit.SECONDS);但是executorService似乎没有一个cancel方法(wtf,为什么?),关闭它不是一个选项,我正在做一些相当简单的事情,所以使用Executors.newScheduledThreadPool (它有cancel())有点过分了。
是否有适当停止执行任务的方法?
PS:我搜索之前,我问,我真的不认为这个hack是正确的方式。
发布于 2016-09-03 12:30:26
executorService.scheduleAtFixedRate(task, 0, 1, TimeUnit.SECONDS);返回一个ScheduledFuture<V>,其中有一个cancel(boolean)方法。取消它的正确方法是在将来取消它。
但是,我认为这不能在任务执行时停止,只会阻止将来的执行。使用布尔标志需要任务知道Thread.isInterrupted()系统。
https://stackoverflow.com/questions/39306855
复制相似问题