Верьте или нет, очистка здесь не является решением ....
Если поток приводит к "абстракции, предоставляемой базовой операционной системой" (например, дисковод или консоль), то оставшиеся байты«передаются в операционную систему для записи; это не гарантирует, что они действительно записаны ...» (см. документацию OutputStream ).Ключевым моментом здесь является то, что ОС может обрабатывать сбросы из разных потоков в разных порядках, если она того пожелает.
Я только что произвел это в своей программе.У меня появилось сообщение об ошибке между двумя обычными сообщениями, оба из которых были сброшены до того, как появилось сообщение об ошибке.
Таким образом, остается вопрос, есть ли встроенный способ синхронизации двух потоков?Или мы должны справиться с этим вручную?