为什么不要用System.out.println()

这行代码什么都没有做,它只是把一些语句打印到了控制台.

其中system.out获得了系统控制台的唯一输出流.PrintStream

而PrintStream的println()里是这样:

public void println(boolean x) {
        synchronized (this) {
            print(x);
            newLine();
        }
    }

看到了吗?同步代码块的是this.而system.out获取的又是唯一输出流.

所以,虚拟机里所有的打印都得按顺序在控制台上打印.其中一个打的慢或者出现问题,其他所有需要打印的地方都得等待.block.

这会产生一个小小的打印让整个系统宕机的事务.

猜你喜欢

转载自blog.csdn.net/dmw412724/article/details/105889612