当我开始学习Java时,我被告知不要在Java EE应用程序中执行System.out.println.但是我真的不知道不这样做的原因是什么.
我完全清楚,如果我们真的需要打印一个重要的,它应该使用日志框架记录.
我真的想在这里问:有没有真正的危险是的System.out.println做什么呢?它会导致任何性能问题吗?
这确实是一个性能问题.如果你深入研究JDK源代码,System.out你最终会synchronized在输出流上遇到一个块.
这意味着如果在源代码中放入足够的println调用,整个代码库将有效地运行单线程,因为所有线程都在等待同步锁定.
这里涉及一些统计数据,对println的单次调用通常不会使整个应用程序爬行.代码中的println调用越多,两个或更多线程就越有可能等待彼此.