Java中System.out.println是否是线程安全的?

Java中System.out.println是否是线程安全的?

阅读 5.1k
1 个回答

是线程安全的

System.out 是一个 PrintStream实例,里面的 println方法实现如下:

 /**
     * Prints a String and then terminate the line.  This method behaves as
     * though it invokes <code>{@link #print(String)}</code> and then
     * <code>{@link #println()}</code>.
     *
     * @param x  The <code>String</code> to be printed.
     */
    public void println(String x) {
        synchronized (this) {
            print(x);
            newLine();
        }
    }

方法是经过 synchronized同步的。也就是说多线程时同时有多个写入System.out操作时,因同步原因效率是很低的,这也是发明了各种logger的原面之一。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题