>>354
簡単に言うと
PrintStream#println(Object)
PrintStream#print(Object)
String#valueOf(Object)
StringBuffer#toString()
new String(StringBuffer)

の順で呼ばれて new String(StringBuffer) 内で
StringBuffer(this.loop) のロックを得ようとして固まるだけ。
synchronized (this) はあっても無くても関係ない。