Java – 停止ExecutorService中的所有任务

前端之家收集整理的这篇文章主要介绍了Java – 停止ExecutorService中的所有任务前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一些执行器服务来安排本地任务,如读取文件,连接到数据库等.这些进程执行大量的日志记录,这是基于有许多线程并发运行的事实,将自己的东西写入日志.

现在,在某个时间点可以引发异常,该异常到达捕获所有异常的主要方法.然后我关闭所有服务并取消每个任务,希望阻止所有进一步的消息到日志.不幸的是,在关闭所有内容后,这些消息仍然显示出来……有什么想法吗?

更新:
这是一些代码

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()

如果您的代码运行循环并且您希望以这种方式停止,那么这样做是个好主意.

猜你在找的Java相关文章