记一次恶心的线程安全问题

当利用ArrayList作为线程生产者处理后结果汇总容器时,可能会产生捕获不到的Exception。

将ArrayList改为BlockingQueue,该bug得以解决。

总结:当在多线程环境下操作共享变量时,一定要使用线程安全的容器,否则连报的异常都捕获不到,非常恶心!!!

如果想捕获到这个异常,需要自定义线程异常捕获处理器Thread.UncaughtExceptionHandler,实现其中的 public void uncaughtException(Thread t, Throwable e); 方法。

原文地址:https://www.cnblogs.com/ppcoder/p/10057994.html