powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / threads und outputstreamwriter
25 сообщений из 26, страница 1 из 2
threads und outputstreamwriter
    #39182804
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
такая тема ))
открываю новый osw чтоб писать туда что то.

делаю пару записей,
следом создаю два треда, в каждом так же в этот osw начинаю писать, следом по заканчивании треда пишу в osw снова в корневом треде (где и создал осв).

смотрим файл есть записи только из корневого треда. а два параллельных подтреда пишут только стрим клозед. такое ощущение что когда треды получают стрим он почему то оказывается закрытым?? а почему. как сделать его открытым для параллельных тредов? пробовал с разными врайтерами - результат одинаков. есть вариант в каждом треде по разу открывать его и писать но мне этот вариант не нравится.
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39182825
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2,

Вам бы про файловые системы почитать чего-нибудь. Обычно, для записи файл открывается эксклюзивно не давай другим процессам писать в тоже время.
Параллельная запись из разных потоков не имеет особого смысла, так как данные в файле будут иметь случайный порядок полностью нарушающих их смысловую ценность.

Решений есть как минимум два.
Простое и банальное. Заворачиваем запись в synchronized. Для каждой записи открываем FileOutputStream и закрываем.
Кстати, документацию тоже надо бы читать. OutputStreamWriter, про который вы спрашиваете, к файловой системе отношения не имеет. Это лишь обертка для текстовой записи в двоичный поток данных.

Второе решение является более оптимальным с точки зрения производительности. Им пользуются, например, фреймверки логирования. Все события записи складываются в очередь. Цельными блоками. Отдельный Thread разгребает очередь и пишет последовательно в файл.
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39182961
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczlor2,

Вам бы про файловые системы почитать чего-нибудь. Обычно, для записи файл открывается эксклюзивно не давай другим процессам писать в тоже время.
Параллельная запись из разных потоков не имеет особого смысла, так как данные в файле будут иметь случайный порядок полностью нарушающих их смысловую ценность.

Решений есть как минимум два.
Простое и банальное. Заворачиваем запись в synchronized. Для каждой записи открываем FileOutputStream и закрываем.
Кстати, документацию тоже надо бы читать. OutputStreamWriter, про который вы спрашиваете, к файловой системе отношения не имеет. Это лишь обертка для текстовой записи в двоичный поток данных.

Второе решение является более оптимальным с точки зрения производительности. Им пользуются, например, фреймверки логирования. Все события записи складываются в очередь. Цельными блоками. Отдельный Thread разгребает очередь и пишет последовательно в файл.
ну я так и делал - открывал поток изнутри и закрывал изнутри. тут ясно. вопросов нет оно работает. заворот записи в синхронайзд не имеет смысла, т.к. осв в нить передается не открытым. почему хз. или он не по ссылке передается или я чего то не знаю. просто мне интересно было сделать именно так, чтоб в открытый поток нити сыпали строки и всё, как в консоль. ну, нет так нет. то что это обертка это я знаю дело в том что именно поток сам закрытый. я и буфередрайтеры пробовал и все остальные ))
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39182966
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2ну я так и делал - открывал поток изнутри и закрывал изнутри. тут ясно. вопросов нет оно работает. заворот записи в синхронайзд не имеет смысла, т.к. осв в нить передается не открытым. почему хз. или он не по ссылке передается или я чего то не знаю. просто мне интересно было сделать именно так, чтоб в открытый поток нити сыпали строки и всё, как в консоль. ну, нет так нет. то что это обертка это я знаю дело в том что именно поток сам закрытый. я и буфередрайтеры пробовал и все остальные ))
Отличный набор слов. Вопросов нет. Кода нет. Полагаю проблема решена?
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39182992
Марс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2, не уверен что вы хотите чтоб много тредов писало в один файл действительно одновременно - даже если файловая система такое разрешает - если один байт из одного потока, а другой из другого то читать это будет ... неудобно.
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39182993
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
причем тут фс. для ос ты что 1 тред запустишь что 100 - для нее это всё-равно будет один процесс, жвм называется. в консоль же ты можешь выводить с нескольких тредов? а почему ты в файл не можешь? суть разницы то нет.
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39183012
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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.
 public static void main(String args[]) throws Exception {

        final File f = new File("test.txt");
        final FileOutputStream fos = new FileOutputStream(f);


        final Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                synchronized (fos) {

                        [color=red]OutputStreamWriter osw = new OutputStreamWriter(fos);[/color]

                    for (int a = 0; a < 10; a++) {
                        pause(300);
                        try {
                           [color=red] osw.write("some string");[/color]
                            fos.write(44);
                            System.out.println("thread1=" + a);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }

                    }

                }

            }
        });

        Thread t2 = new Thread(new Runnable() {
            @Override
            public void run() {
                synchronized (fos) {
                    for (int a = 0; a < 10; a++) {
                        pause(300);
                        try {
                            fos.write(100);
                            System.out.println("thread2=" + a);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }

                    }
                }
            }
        });

        t1.start();
        t2.start();
    }
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39183232
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2,

Дурдом "Ромкашка". Какой смысл в synchronized заворачивать тело всего потока? Я писал о том чтобы синхронизировать запись одного сообщения. Тогда сохраниться целостность сообщений. Хотя, в случае FileOutputStream, похоже там где-то таки есть синхронизация на уровне файловой системы и реализации. Добиться смешивания под виндой не выходит.

Никаких исключений не вижу. Подозреваю что приведенный код не полон. Приведите исключение (полностью, а не то только сообщение).
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39184420
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
это не "реальный" код конечно же я просто пытаюсь разобраться в конкурренси на таких примерах, в общем, код писал по памяти тут действительно ексепшена нет )) чот я намудрил. чтоб получить ту картинку какую я ожидал я просто забыл флюш сделать а потом закрыть ОСВ (рукалицо) если не сделать флюш, то изменения "коммитятся" на момент клоуз.

в общем, благодарю. целительная сила форума - запость сюда дурь и потом сразу же поймешь проблему.
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39184455
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2я просто забыл флюш сделать
OMFG
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39184569
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я спикинг по аелтсу сдал на 7 - мне можно

зы, просто в транскрипции флэш писать можно подумать flash а так - всё однозначно.
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39184589
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я подумал что ТС - немец. Он тему оформил как threads УНД outputstreamwriter.
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39184645
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА я подумал что ТС - немец. Он тему оформил как threads УНД outputstreamwriter.
))) LOL
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39184707
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

не стебитесь! их шпрахе дойче шлехт. майне шпрахе ист енглиш унд руссиш!
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39184716
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Крутяк. Зато ты можешь Раммштайн слушать в подлиннике.
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39184727
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2их шпрахе дойче шлехт
Ну, ведь "шпрехе" же...
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39184728
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonКрутяк. Зато ты можешь Раммштайн слушать в подлиннике.
Ты слушаешь в переводе?
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39184732
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczmaytonКрутяк. Зато ты можешь Раммштайн слушать в подлиннике.
Ты слушаешь в переводе?
Я искал отдельно Lyrics. И читал слушая.
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39184740
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonBlazkowiczпропущено...

Ты слушаешь в переводе?
Я искал отдельно Lyrics. И читал слушая.
Это был риторический вопрос. :)
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39184794
Марс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

У рамштайн есть минимум одна песня на русском (ковер "Штиль"), ещё есть минимум одна на испанском.
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39184838
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Марсковер "Штиль"
Прямо пост изнасилования транслитерации.
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39184918
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мы ж русскими буквами пишем. как хотим - так и пишем. Кстати, у вас ник интересный, как правильно прочесь? Блачкович или Блакович? (зы, ни в коем разе не подкалываю, просто интересно).
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39185323
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тупой вопрос по тредам и т.п. )) в чем суть проблемы потокобезопасности? в плане именно потокоопасности? скажем, у меня лист есть - как можно его испортить многопоточкой и что будет если я его сделаю коллекшнз.синхронайз?
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39185340
Марс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://docs.oracle.com/javase/tutorial/essential/concurrency/sync.html . Конкретно с коллекциями не сталкивался, но насколько понимаю threadsafe вовсе не означает что использование гарантирует от ошибок доступа - код всё-равно надо синхронизировать по объекту.
...
Рейтинг: 0 / 0
threads und outputstreamwriter
    #39185341
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а в чем тогда смысл между хашмап и хаштабель?
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / threads und outputstreamwriter
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]