
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
16.06.2017, 05:07
|
|||
|---|---|---|---|
Заменить бесконечный цикл на что-то из java.util.concurrency |
|||
|
#18+
Встретился мне замечательный кусок кода с вот таким TODO (как в заголовке). Дело в том, что сам я с этим пока не очень дружу. Насколько я понял, ситуация следующая. Есть ConcurrentMap в котором по ключу лежит значение. В отдельном потоке в эту map добавляются пары. Другие потоки (каждый в отдельности) при вызове определенного метода ждут с помощью бесконечного цикла пока в этой map не появится нужное им значение по известному каждому конкретному потоку уникальному ключу. Выглядит это всё как-то сложно и не эффективно. Как принято в промышленных системах решать такие задачи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.06.2017, 05:59
|
|||
|---|---|---|---|
Заменить бесконечный цикл на что-то из java.util.concurrency |
|||
|
#18+
ThreadPoolExecutor? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.06.2017, 06:22
|
|||
|---|---|---|---|
Заменить бесконечный цикл на что-то из java.util.concurrency |
|||
|
#18+
Hett, Я подумывал о чем-то типа Locks или что-то такое. Ведь задача получается в том, чтобы подождать пока некоторое значение не будет доступно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.06.2017, 07:57
|
|||
|---|---|---|---|
|
|||
Заменить бесконечный цикл на что-то из java.util.concurrency |
|||
|
#18+
по описанию, стандартный wait.... notify / notifyAll при чем и зачем тут java.util.concurrency мне совершенно не понятно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.06.2017, 08:02
|
|||
|---|---|---|---|
|
|||
Заменить бесконечный цикл на что-то из java.util.concurrency |
|||
|
#18+
Для начала хорошо бы определится, какую именно проблему хочется решить. Холостые циклы заменить на блокировку? Или поменять ожидающие потоки на колбэки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.06.2017, 08:03
|
|||
|---|---|---|---|
|
|||
Заменить бесконечный цикл на что-то из java.util.concurrency |
|||
|
#18+
jxcoderКак принято в промышленных системах решать такие задачи? Издатель-подписчик и Гугл в помощь. Делаешь надстройку над map, которая по добавлению ключа делает рассылку события - добавлен ключ такой-то. Другие потоки подписываются на это событие и просыпаясь проверяют их ли ключ. (Или вообще ядовитая пилюля смерти пришла :) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.06.2017, 09:12
|
|||
|---|---|---|---|
|
|||
Заменить бесконечный цикл на что-то из java.util.concurrency |
|||
|
#18+
Сергей АрсеньевjxcoderКак принято в промышленных системах решать такие задачи? Издатель-подписчик и Гугл в помощь. Делаешь надстройку над map, которая по добавлению ключа делает рассылку события - добавлен ключ такой-то. Другие потоки подписываются на это событие и просыпаясь проверяют их ли ключ. (Или вообще ядовитая пилюля смерти пришла :) ) https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.06.2017, 09:18
|
|||
|---|---|---|---|
|
|||
Заменить бесконечный цикл на что-то из java.util.concurrency |
|||
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.06.2017, 09:37
|
|||
|---|---|---|---|
|
|||
Заменить бесконечный цикл на что-то из java.util.concurrency |
|||
|
#18+
Сергей Арсеньев Тогда уж и про ObservableMap бы ссылку привел. Это вообще не то. Там же один поток :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.06.2017, 17:24
|
|||
|---|---|---|---|
|
|||
Заменить бесконечный цикл на что-то из java.util.concurrency |
|||
|
#18+
BlazkowiczЭто вообще не то. Там же один поток :) Так сначала надо узнать, что что-то добавили, а уж потом спамить потоки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.06.2017, 20:31
|
|||
|---|---|---|---|
Заменить бесконечный цикл на что-то из java.util.concurrency |
|||
|
#18+
jxcoderЗаменить бесконечный цикл на что-то из java.util.concurrency Пять вещей, которые вы не знали о ... пакете java.util.concurrent. Часть 1 , Часть 2 (см. ScheduledExecutorServices) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2017, 02:24
|
|||
|---|---|---|---|
Заменить бесконечный цикл на что-то из java.util.concurrency |
|||
|
#18+
Надо сохранить блокирование. Я сейчас выбрал SynchronousQueue. Делаю вместо бесконечного цикла вот так: Код: java 1. Соответственно, в другом месте заполняю эту map из этих queue ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&mobile=1&tid=2122832]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
69ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 398ms |

| 0 / 0 |
