打印线程池线程引发的异常,Java';中国的默认行为

打印线程池线程引发的异常,Java';中国的默认行为,java,concurrency,Java,Concurrency,我问了这个问题: 用户格雷在回复中说:“默认情况下,不会打印线程池线程抛出的异常。” 我想知道原因是什么。让线程池线程抛出未经检查的异常并在默认情况下停止工作而不打印任何错误,这似乎让我感到困惑。必须修改程序,例如线程有一个错误。 使用AOP可以实现这样的目标。因为如果它打印它,另一个开发人员会问,为什么它会用不需要的堆栈跟踪来破坏程序的输出,并通过将堆栈跟踪写入同步的打印流来大幅降低吞吐量。如果要打印例外,请自己打印。没有什么能阻止你做这件事 你得到的答案说明了如何做到这一点。您还可以使用另一

我问了这个问题:

用户格雷在回复中说:“默认情况下,不会打印线程池线程抛出的异常。”


我想知道原因是什么。让线程池线程抛出未经检查的异常并在默认情况下停止工作而不打印任何错误,这似乎让我感到困惑。

必须修改程序,例如线程有一个错误。
使用AOP可以实现这样的目标。

因为如果它打印它,另一个开发人员会问,为什么它会用不需要的堆栈跟踪来破坏程序的输出,并通过将堆栈跟踪写入同步的打印流来大幅降低吞吐量。如果要打印例外,请自己打印。没有什么能阻止你做这件事


你得到的答案说明了如何做到这一点。您还可以使用另一个runnable来包装您的所有runnable,该runnable捕获运行时异常,在抛出异常时打印它们,然后重新播放它们

因此,从线程池线程打印堆栈跟踪的问题是PrintStream是同步的,因此,在这种情况下,它的性能要差得多?我试图理解为什么从线程池线程中打印这些线程会如此糟糕,但在主线程中这样做是可以的。只是默认情况下这样做会惹恼很多人,并会降低性能。如果需要跟踪,请添加跟踪。