【发布时间】:2012-11-30 09:53:13
【问题描述】:
我有一些执行器服务来安排本地任务,例如读取文件、连接到数据库等。这些进程执行大量日志记录,这是基于有许多线程同时运行、编写自己的东西的事实而广泛使用的进入日志。
现在,在某个时间点可以引发异常,该异常会到达捕获所有异常的 main 方法。然后我将关闭所有服务并取消每个任务,希望能阻止所有进一步的消息进入日志。不幸的是,在我关闭所有内容后,这些消息仍然出现......有什么想法吗?
更新: 这是一些代码
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);
}
【问题讨论】:
-
如果您不介意,请给我们一些代码。任何机会记录都是异步完成的?您是否使用
shutdown而不是shutdownNow?原因有很多。 -
关闭服务并取消任务并不意味着这些任务会立即停止。
标签: java concurrency executorservice