Java – 停止ExecutorService中的所有任务
发布时间:2020-12-14 23:59:20 所属栏目:Java 来源:网络整理
导读:我有一些执行器服务来安排本地任务,如读取文件,连接到数据库等.这些进程执行大量的日志记录,这是基于有许多线程并发运行的事实,将自己的东西写入日志. 现在,在某个时间点可以引发异常,该异常到达捕获所有异常的主要方法.然后我关闭所有服务并取消每个任务,希
我有一些执行器服务来安排本地任务,如读取文件,连接到数据库等.这些进程执行大量的日志记录,这是基于有许多线程并发运行的事实,将自己的东西写入日志.
现在,在某个时间点可以引发异常,该异常到达捕获所有异常的主要方法.然后我关闭所有服务并取消每个任务,希望阻止所有进一步的消息到日志.不幸的是,在关闭所有内容后,这些消息仍然显示出来……有什么想法吗? 更新: public class Scheduler{ private final ExecutorService service; private final ConcurrentMap<Object,Future<V>> cache; ... public void shutDown() { service.shutdownNow(); for (Future task : cache.values()) task.cancel(true); } 解决方法
任务将继续运行,直到它到达检测到线程已被中断的点.调用某些系统或线程函数时可能会发生这种情况,并且可能会抛出异常.在您的情况下,您可能需要通过致电来检查自己
Thread.currentThread().isInterrupted() 如果您的代码运行循环并且您希望以这种方式停止,那么这样做是个好主意. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |