java.io.PrintStream上的线程争用

ilo*_*arn 6 java multithreading

我正在使用Java Mission Control来分析我的应用程序的性能问题.JMC突出显示了Thread Contention和Lock Instances部分下的java.io.PrintStream.

为什么我要面对JDK包的线程争用问题?

在此输入图像描述 在此输入图像描述

And*_*gin 7

看起来你的应用程序正在同时从几个线程向stdout或stderr产生大量输出(System.out并且System.err是PrintStreams).a上的写入和刷新PrintStream无法并行处理,它们都是同步的,因此您将面临争用.

  • `System.out`不是一个方法,它是`PrintStream`类型的公共静态字段.如果你打开`PrintStream`的源代码并查看`println(...)`方法,你会看到synchronized块. (2认同)