代码之家  ›  专栏  ›  技术社区  ›  Dongkwon Lee

为什么printstream.java中的println(object x)方法从同步块外部调用string.valueof()?

  •  0
  • Dongkwon Lee  · 技术社区  · 7 年前

    为什么printstream.java中的println(object x)方法从同步块外部调用string.valueof()?

    为什么不使用现有的打印(对象obj)?

    为了表现?

    1 回复  |  直到 7 年前
        1
  •  2
  •   yole    7 年前

    String.valueOf(x) 调用 toString() 方法对 x . 此方法的实现可以做任何事情,包括在此或其他 PrintStream 实例。为了避免死锁, String.valueOf() 需要在锁外调用。

    这个 print 方法不能重用,因为换行符需要在对象之后立即打印,即使有其他线程正在将其他数据写入同一对象 打印流 . 为了实现这一目标, 打印 newLine 从内部调用 synchronized 块。