Прежде всего, обратите внимание, что не имеет значения, что вы печатаете для того, чтобы такое поведение происходило, достаточно любого отпечатка.
С отпечатком в начале: итак, с некоторой отладкой я заметилчто в методе PrintStream.write(String s)
есть строка textOut.flushBuffer()
, которая неожиданно завершается с ошибкой.Результатом этого, по сути, является то, что запрошенная строка добавляется в буфер, но буфер не сбрасывается, а новая строка не добавляется в буфер, потому что это отдельный шаг, и он идет намного позже точки вызовачто не удалось.Затем в конце, при последней печати, этот метод завершается успешно, поэтому ваша строка выводится на консоль вместе со всеми предыдущими, поскольку они ожидали в буфере (1024 раза).
Без печати в начале: программа даже не достигает уровня textOut.flushBuffer()
при всех попытках печати, она даже не достигает самого метода println
.Это, вероятно, потому что он должен инициализировать некоторые классы по пути, так как это не было сделано раньше (как с печатью в начале) и не может, потому что стек переполнен.Таким образом, в отличие от предыдущего случая с печатью в начале, в буфер ничего не добавляется, поэтому в конце мы напечатали только одну строку (1024, 1 раз).
Я понятия не имею, если этоимеет какой-то смысл, но это было, конечно, весело.