|
|
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
такая тема )) открываю новый osw чтоб писать туда что то. делаю пару записей, следом создаю два треда, в каждом так же в этот osw начинаю писать, следом по заканчивании треда пишу в osw снова в корневом треде (где и создал осв). смотрим файл есть записи только из корневого треда. а два параллельных подтреда пишут только стрим клозед. такое ощущение что когда треды получают стрим он почему то оказывается закрытым?? а почему. как сделать его открытым для параллельных тредов? пробовал с разными врайтерами - результат одинаков. есть вариант в каждом треде по разу открывать его и писать но мне этот вариант не нравится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 16:57 |
|
||
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
lor2, Вам бы про файловые системы почитать чего-нибудь. Обычно, для записи файл открывается эксклюзивно не давай другим процессам писать в тоже время. Параллельная запись из разных потоков не имеет особого смысла, так как данные в файле будут иметь случайный порядок полностью нарушающих их смысловую ценность. Решений есть как минимум два. Простое и банальное. Заворачиваем запись в synchronized. Для каждой записи открываем FileOutputStream и закрываем. Кстати, документацию тоже надо бы читать. OutputStreamWriter, про который вы спрашиваете, к файловой системе отношения не имеет. Это лишь обертка для текстовой записи в двоичный поток данных. Второе решение является более оптимальным с точки зрения производительности. Им пользуются, например, фреймверки логирования. Все события записи складываются в очередь. Цельными блоками. Отдельный Thread разгребает очередь и пишет последовательно в файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 17:10 |
|
||
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
Blazkowiczlor2, Вам бы про файловые системы почитать чего-нибудь. Обычно, для записи файл открывается эксклюзивно не давай другим процессам писать в тоже время. Параллельная запись из разных потоков не имеет особого смысла, так как данные в файле будут иметь случайный порядок полностью нарушающих их смысловую ценность. Решений есть как минимум два. Простое и банальное. Заворачиваем запись в synchronized. Для каждой записи открываем FileOutputStream и закрываем. Кстати, документацию тоже надо бы читать. OutputStreamWriter, про который вы спрашиваете, к файловой системе отношения не имеет. Это лишь обертка для текстовой записи в двоичный поток данных. Второе решение является более оптимальным с точки зрения производительности. Им пользуются, например, фреймверки логирования. Все события записи складываются в очередь. Цельными блоками. Отдельный Thread разгребает очередь и пишет последовательно в файл. ну я так и делал - открывал поток изнутри и закрывал изнутри. тут ясно. вопросов нет оно работает. заворот записи в синхронайзд не имеет смысла, т.к. осв в нить передается не открытым. почему хз. или он не по ссылке передается или я чего то не знаю. просто мне интересно было сделать именно так, чтоб в открытый поток нити сыпали строки и всё, как в консоль. ну, нет так нет. то что это обертка это я знаю дело в том что именно поток сам закрытый. я и буфередрайтеры пробовал и все остальные )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 18:59 |
|
||
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
lor2ну я так и делал - открывал поток изнутри и закрывал изнутри. тут ясно. вопросов нет оно работает. заворот записи в синхронайзд не имеет смысла, т.к. осв в нить передается не открытым. почему хз. или он не по ссылке передается или я чего то не знаю. просто мне интересно было сделать именно так, чтоб в открытый поток нити сыпали строки и всё, как в консоль. ну, нет так нет. то что это обертка это я знаю дело в том что именно поток сам закрытый. я и буфередрайтеры пробовал и все остальные )) Отличный набор слов. Вопросов нет. Кода нет. Полагаю проблема решена? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 19:02 |
|
||
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
lor2, не уверен что вы хотите чтоб много тредов писало в один файл действительно одновременно - даже если файловая система такое разрешает - если один байт из одного потока, а другой из другого то читать это будет ... неудобно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 19:27 |
|
||
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
причем тут фс. для ос ты что 1 тред запустишь что 100 - для нее это всё-равно будет один процесс, жвм называется. в консоль же ты можешь выводить с нескольких тредов? а почему ты в файл не можешь? суть разницы то нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 19:34 |
|
||
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
Blazkowiczlor2ну я так и делал - открывал поток изнутри и закрывал изнутри. тут ясно. вопросов нет оно работает. заворот записи в синхронайзд не имеет смысла, т.к. осв в нить передается не открытым. почему хз. или он не по ссылке передается или я чего то не знаю. просто мне интересно было сделать именно так, чтоб в открытый поток нити сыпали строки и всё, как в консоль. ну, нет так нет. то что это обертка это я знаю дело в том что именно поток сам закрытый. я и буфередрайтеры пробовал и все остальные )) Отличный набор слов. Вопросов нет. Кода нет. Полагаю проблема решена? нет в общем, если я фос (файлаутпутстрим) передаю в нить, то в нее всё пишется как положено, если я этот фос оборачиваю в осв - то осв (аутпутстримрайтер) говорит что поток закрыт. следом пишу в этот поток байт - оно пишет. если делаю напрямую набор байтов в поток без синхрона то два потока выдают примерно такой вид: адддададддадада, после синхрона как положено идет ааааааааддддддд. т.е. всё собссно пашет так как должно пахать. но меня заботит почему если я оборачиваю поток - оно говорит что поток закрыт? код вот: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 19:56 |
|
||
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
lor2, Дурдом "Ромкашка". Какой смысл в synchronized заворачивать тело всего потока? Я писал о том чтобы синхронизировать запись одного сообщения. Тогда сохраниться целостность сообщений. Хотя, в случае FileOutputStream, похоже там где-то таки есть синхронизация на уровне файловой системы и реализации. Добиться смешивания под виндой не выходит. Никаких исключений не вижу. Подозреваю что приведенный код не полон. Приведите исключение (полностью, а не то только сообщение). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 08:53 |
|
||
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, это не "реальный" код конечно же я просто пытаюсь разобраться в конкурренси на таких примерах, в общем, код писал по памяти тут действительно ексепшена нет )) чот я намудрил. чтоб получить ту картинку какую я ожидал я просто забыл флюш сделать а потом закрыть ОСВ (рукалицо) если не сделать флюш, то изменения "коммитятся" на момент клоуз. в общем, благодарю. целительная сила форума - запость сюда дурь и потом сразу же поймешь проблему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 07:07 |
|
||
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
lor2я просто забыл флюш сделать OMFG ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 09:06 |
|
||
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
я спикинг по аелтсу сдал на 7 - мне можно зы, просто в транскрипции флэш писать можно подумать flash а так - всё однозначно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 11:04 |
|
||
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
А я подумал что ТС - немец. Он тему оформил как threads УНД outputstreamwriter. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 11:25 |
|
||
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
maytonА я подумал что ТС - немец. Он тему оформил как threads УНД outputstreamwriter. ))) LOL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 12:01 |
|
||
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
Petro123, не стебитесь! их шпрахе дойче шлехт. майне шпрахе ист енглиш унд руссиш! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 12:27 |
|
||
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
Крутяк. Зато ты можешь Раммштайн слушать в подлиннике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 12:29 |
|
||
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
lor2их шпрахе дойче шлехт Ну, ведь "шпрехе" же... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 12:33 |
|
||
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
maytonКрутяк. Зато ты можешь Раммштайн слушать в подлиннике. Ты слушаешь в переводе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 12:34 |
|
||
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
BlazkowiczmaytonКрутяк. Зато ты можешь Раммштайн слушать в подлиннике. Ты слушаешь в переводе? Я искал отдельно Lyrics. И читал слушая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 12:34 |
|
||
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
maytonBlazkowiczпропущено... Ты слушаешь в переводе? Я искал отдельно Lyrics. И читал слушая. Это был риторический вопрос. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 12:37 |
|
||
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, У рамштайн есть минимум одна песня на русском (ковер "Штиль"), ещё есть минимум одна на испанском. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 13:01 |
|
||
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
Марсковер "Штиль" Прямо пост изнасилования транслитерации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 13:20 |
|
||
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
мы ж русскими буквами пишем. как хотим - так и пишем. Кстати, у вас ник интересный, как правильно прочесь? Блачкович или Блакович? (зы, ни в коем разе не подкалываю, просто интересно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 14:09 |
|
||
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
тупой вопрос по тредам и т.п. )) в чем суть проблемы потокобезопасности? в плане именно потокоопасности? скажем, у меня лист есть - как можно его испортить многопоточкой и что будет если я его сделаю коллекшнз.синхронайз? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 19:14 |
|
||
|
threads und outputstreamwriter
|
|||
|---|---|---|---|
|
#18+
https://docs.oracle.com/javase/tutorial/essential/concurrency/sync.html . Конкретно с коллекциями не сталкивался, но насколько понимаю threadsafe вовсе не означает что использование гарантирует от ошибок доступа - код всё-равно надо синхронизировать по объекту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 19:32 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39184838&tid=2124307]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
139ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 443ms |

| 0 / 0 |
