为什么PrintStream.java中的println(Object x(方法从同步块外部调用String.valueOf((?
为什么不使用现有的打印(Object obj(?
性能?
String.valueOf(x)
调用x
上的toString()
方法。此方法的实现可以执行任何操作,包括在此实例或其他PrintStream
实例上进行同步。为了避免死锁,需要在锁之外调用String.valueOf()
。
print
方法不能重复使用,因为换行符需要在对象之后立即打印,即使有其他线程将其他数据写入同一PrintStream
。为了实现这一点,从synchronized
块内调用print
和newLine
。