Java多线程编程核心技术(第3版)
上QQ阅读APP看书,第一时间看更新

2.2.6 方法println()也是同步的

在JDK的源代码中也用到了synchronized(this)使用的体现,PrintStream.java类中的println()重载方法代码如下:


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

public void println(Object x) {
    String s = String.valueOf(x);
    synchronized (this) {
        print(s);
        newLine();
    }
}

两个方法都用到synchronized (this)同步代码块,说明public void println(String x)和public void println(Object x)方法在synchronized (this)同步代码块中是按顺序执行,是同步执行,这样输出的一行信息只属于某一个线程,不会出现输出的数据所属两个线程的情况。