当我开始学习Java时,被告知不要在Java EE应用程序中执行System.out.println。但是我真的不知道不这样做的原因是什么。
我完全知道,如果我们真的需要打印重要内容,则应该使用日志记录框架对其进行记录。
我在这里真正想问的是:System.out.println是否造成任何真正的危害?它会导致性能问题吗?
这确实是一个性能问题。如果深入研究JDK源代码,System.out
最终将synchronized
在输出流上遇到一个块。
这意味着,如果您在源代码中放置了足够的println调用,则整个代码库将有效地运行单线程,因为所有线程都在等待同步锁。
这里涉及一些统计信息,对println的一次调用通常不会使整个应用程序爬行。您的代码中的println调用越多,则两个或更多线程相互等待的可能性就越大。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句