Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > OutputStream


Автор: val 17.5.2007, 13:13
Привет, всем. Можно ли из разных потоков писать в один и тот же OutputStream без выполнения синхронизации...

Автор: tipoc 17.5.2007, 23:38
Очевидно нет. Объект то один, а потоков, которые работают с этим объектом - два. Хотя если методы, которые ты будешь вызывать у объекта OutputStream, каким-то образом уже синхронизированы, то синхронизация не потребуется.

Автор: ekr 17.5.2007, 23:44
)))
Вспоминается старый анекдот:
-Па, а эти грибы можно есть?
-Можно, сынок, можно. Только умрешь потом...

Цитата

Можно ли из разных потоков писать в один и тот же OutputStream без выполнения синхронизации...

Можно ))) Только данные могут попасть в поток не в том порядке, в каком предполагалось )

Цитата

Очевидно нет. Объект то один, а потоков, которые работают с этим объектом - два.

Ну почему же? Попробуйте для иллюстрации из двух потоков писать в консоль... Все работает.

Автор: tipoc 18.5.2007, 00:17
Цитата

Ну почему же? Попробуйте для иллюстрации из двух потоков писать в консоль... Все работает.

Не факт, что будет всегда корректно выводить данные. Зависит от реализации потока OutputStream. Хотя в большинстве случаев подозреваю будет работать корректно.

Автор: ekr 18.5.2007, 00:25
Цитата

Хотя в большинстве случаев подозреваю будет работать корректно

Да, я тоже так считаю.
Окончательно ситуацию может прояснить исходник класса. Есть ли у используемого XXXOutputStream модификаторы synchronized для методов или synchronized-секции внутри оных.

Автор: Samotnik 18.5.2007, 00:40
2 val

Цитата(val @  17.5.2007,  13:13 Найти цитируемый пост)
Можно ли из разных потоков писать в один и тот же OutputStream без выполнения синхронизации

Вряд ли, даже если компилятор пропустит и прога запуститься на выполнение, вряд ли все сработает корректно, это как минимум "плохой стиль программирования"!!!!

Мой те совет пиши либо два OutputStream ,либо синхронезируй. И ни ипацца  smile 

Автор: ekr 18.5.2007, 00:47
Цитата

Вряд ли, даже если компилятор пропустит 

пропустит )
Цитата

"плохой стиль программирования"

просто четко надо понимать возможные последствия несинхронизированной записи

Автор: Samotnik 18.5.2007, 00:58
Цитата(ekr @  18.5.2007,  00:47 Найти цитируемый пост)
просто четко надо понимать возможные последствия несинхронизированной записи 

Ну оно конечно так, всегда нуна представлять че будет при написании данного кода.  Но иногда  сидиш продумываеш, пишишь, затем запускаеш, а на экране или беконечный цикл или ексепшены выскакивают один за другим. Или еще какая нить хрень. 
Вод для этого и следует читать разделы "хороший стиль программирования", т.к. у людей это все было и они могут че нить дельное посоветывать!!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)