powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Покритикуйте плиз решение - многопоточность
14 сообщений из 14, страница 1 из 1
Покритикуйте плиз решение - многопоточность
    #37691458
roibush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть громная строка, с которой надо сделать определенные манипуляции.
Так как строка огромная, то юзаем многопоточность. я делю строку на равные части и скармливаю
потокам на обработку. потом рез-ты обработки вставляю в StringBuffer, в той же последовательности как и отдавал потокам на обработку.
Юзаю StringBuffer, так как он потокобезопасный в отличии от StringBuilder.


Мой вопрос : По Вашему мнению правильный ли механизм я выбрал для сбора результирующих данных?
То есть правильно ли в контексте данной задачи использовать StringBuffer? Или есть более правильное или произвродительное решение для сборки данных, которые потоки обрабатывали паралельно?

Заранее спасибо!
...
Рейтинг: 0 / 0
Покритикуйте плиз решение - многопоточность
    #37691466
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сколько у вас там потоков и как часто вы это планируете запускать, что вдруг сборка результатов стала узким местом?
Если со StringBuffer работает без ошибок, то решение - подходящее.
Можно ли быстрее? Скорее всего можно. Вопрос в том нужно ли?
...
Рейтинг: 0 / 0
Покритикуйте плиз решение - многопоточность
    #37691480
OOsalivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roibush,

все зависит рт манипуляций которые нужно сделать
...
Рейтинг: 0 / 0
Покритикуйте плиз решение - многопоточность
    #37691503
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roibushИли есть более правильное или произвродительное решение для сборки данных
не бить данные на куски, чтобы потом их собирать.
Если в памяти, то будет быстрее.
______________________________________________
"Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн.
AutoPOI.ru — ГИС-технологии для Oracle
...
Рейтинг: 0 / 0
Покритикуйте плиз решение - многопоточность
    #37691639
roibush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо за комментарии!

Скажите плиз, а если скажем потоки возвращали бы списки обработанных объектов, ну скажем какие-нибудь абстрактные списки заказов List<Order>. то технология сбора обработанных данных та же - самая? То есть ожидание пока все потоки вернут списки объектов? Или есть какая-нибудь продвинутая техника (специальный класс или еще что то), которая собирает у потоков рез-ты их работы?
...
Рейтинг: 0 / 0
Покритикуйте плиз решение - многопоточность
    #37691645
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Покритикуйте плиз решение - многопоточность
    #37691656
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roibush,
- процессор - 1, потоков - 100.
Результат будет медленнее, т.к. процессор всего - 1 (переключение контекста с потока на поток).
Остальное можно не мучить голову, т.е. искать нужно где потерял, а не где светло.
...
Рейтинг: 0 / 0
Покритикуйте плиз решение - многопоточность
    #37691664
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор http://docs.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html

ForkJoin конечно неплохая штука, но конкретно для этой задачи лучше использовать ExecutorService.newFixedThreadPool() вместе с Callable и Future, с ForkJoin стоит возиться если используется рекурсивный механизм.
...
Рейтинг: 0 / 0
Покритикуйте плиз решение - многопоточность
    #37691672
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и да Petro правильно подметил - если процессор один то нет смысла возиться с многопоточностью, так как таски судя по всему computing-intensive, а вот если ядер хотя бы два - то таки лучше работать параллельно и задать количество потоков в newFixedThreadPool() равное количеству логических процессоров, из Java кода можно получить как Runtime.getRuntime().availableProcessors
...
Рейтинг: 0 / 0
Покритикуйте плиз решение - многопоточность
    #37691673
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123roibush,
- процессор - 1, потоков - 100.
Результат будет медленнее, т.к. процессор всего - 1 (переключение контекста с потока на поток).
Остальное можно не мучить голову, т.е. искать нужно где потерял, а не где светло.
Процессор 1 - ядер много.
Если обработка включает IO операции, то процессор можно загрузить дополнительными операциями, на время простоя других потоков на IO.
...
Рейтинг: 0 / 0
Покритикуйте плиз решение - многопоточность
    #37691674
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никНу и да Petro правильно подметил - если процессор один то нет смысла возиться с многопоточностью, так как таски судя по всему computing-intensive, а вот если ядер хотя бы два - то таки лучше работать параллельно и задать количество потоков в newFixedThreadPool() равное количеству логических процессоров, из Java кода можно получить как Runtime.getRuntime().availableProcessors
Если обработка данных исключает IO. Тогда так. Если присутствует работа с базой, сохранение на жесткий диск и т.п. то потоков можно больше запускать.
...
Рейтинг: 0 / 0
Покритикуйте плиз решение - многопоточность
    #37691716
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕсли обработка данных исключает IO. Тогда так. Если присутствует работа с базой, сохранение на жесткий диск и т.п. то потоков можно больше запускать.

Да, я это и предполагал, вроде слышал что таски завязанные на IO называются IO-intensive, а завязанные на вычисления - compute-intensive, как-то не подумал что это может вызвать недопонимание
...
Рейтинг: 0 / 0
Покритикуйте плиз решение - многопоточность
    #37691758
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никДа, я это и предполагал, вроде слышал что таски завязанные на IO называются IO-intensive, а завязанные на вычисления - compute-intensive, как-то не подумал что это может вызвать недопонимание
compute-intensive не обозначает абсолютного отсутствия IO.
...
Рейтинг: 0 / 0
Покритикуйте плиз решение - многопоточность
    #37691833
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕсть огромная строка, с которой надо сделать определенные манипуляции .
а можно уточнить следующие моменты

1) насколько огромна строка
2) откуда она берется
3) куда потом кладется
4) что с ней программа делает?
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Покритикуйте плиз решение - многопоточность
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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