powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Заменить бесконечный цикл на что-то из java.util.concurrency
12 сообщений из 12, страница 1 из 1
Заменить бесконечный цикл на что-то из java.util.concurrency
    #39472759
jxcoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Встретился мне замечательный кусок кода с вот таким TODO (как в заголовке).

Дело в том, что сам я с этим пока не очень дружу.

Насколько я понял, ситуация следующая.

Есть ConcurrentMap в котором по ключу лежит значение. В отдельном потоке в эту map добавляются пары.

Другие потоки (каждый в отдельности) при вызове определенного метода ждут с помощью бесконечного цикла пока в этой map не появится нужное им значение по известному каждому конкретному потоку уникальному ключу.


Выглядит это всё как-то сложно и не эффективно.

Как принято в промышленных системах решать такие задачи?
...
Рейтинг: 0 / 0
Заменить бесконечный цикл на что-то из java.util.concurrency
    #39472766
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ThreadPoolExecutor?
...
Рейтинг: 0 / 0
Заменить бесконечный цикл на что-то из java.util.concurrency
    #39472771
jxcoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

Я подумывал о чем-то типа Locks или что-то такое.

Ведь задача получается в том, чтобы подождать пока некоторое значение не будет доступно.
...
Рейтинг: 0 / 0
Заменить бесконечный цикл на что-то из java.util.concurrency
    #39472787
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по описанию, стандартный wait.... notify / notifyAll
при чем и зачем тут java.util.concurrency мне совершенно не понятно
...
Рейтинг: 0 / 0
Заменить бесконечный цикл на что-то из java.util.concurrency
    #39472792
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала хорошо бы определится, какую именно проблему хочется решить. Холостые циклы заменить на блокировку? Или поменять ожидающие потоки на колбэки?
...
Рейтинг: 0 / 0
Заменить бесконечный цикл на что-то из java.util.concurrency
    #39472793
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jxcoderКак принято в промышленных системах решать такие задачи?
Издатель-подписчик и Гугл в помощь.
Делаешь надстройку над map, которая по добавлению ключа делает рассылку события - добавлен ключ такой-то. Другие потоки подписываются на это событие и просыпаясь проверяют их ли ключ. (Или вообще ядовитая пилюля смерти пришла :) )
...
Рейтинг: 0 / 0
Заменить бесконечный цикл на что-то из java.util.concurrency
    #39472839
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевjxcoderКак принято в промышленных системах решать такие задачи?
Издатель-подписчик и Гугл в помощь.
Делаешь надстройку над map, которая по добавлению ключа делает рассылку события - добавлен ключ такой-то. Другие потоки подписываются на это событие и просыпаясь проверяют их ли ключ. (Или вообще ядовитая пилюля смерти пришла :) )
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html
...
Рейтинг: 0 / 0
Заменить бесконечный цикл на что-то из java.util.concurrency
    #39472845
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
Тогда уж и про ObservableMap бы ссылку привел.
YouTube Video
...
Рейтинг: 0 / 0
Заменить бесконечный цикл на что-то из java.util.concurrency
    #39472856
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев Тогда уж и про ObservableMap бы ссылку привел.

Это вообще не то. Там же один поток :)
...
Рейтинг: 0 / 0
Заменить бесконечный цикл на что-то из java.util.concurrency
    #39473329
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЭто вообще не то. Там же один поток :)
Так сначала надо узнать, что что-то добавили, а уж потом спамить потоки.
...
Рейтинг: 0 / 0
Заменить бесконечный цикл на что-то из java.util.concurrency
    #39473433
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jxcoderЗаменить бесконечный цикл на что-то из java.util.concurrency Пять вещей, которые вы не знали о ... пакете java.util.concurrent. Часть 1 , Часть 2
(см. ScheduledExecutorServices)
...
Рейтинг: 0 / 0
Заменить бесконечный цикл на что-то из java.util.concurrency
    #39473517
jxcoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо сохранить блокирование.

Я сейчас выбрал SynchronousQueue.

Делаю вместо бесконечного цикла вот так:

Код: java
1.
queues.map(queueId).take()



Соответственно, в другом месте заполняю эту map из этих queue
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Заменить бесконечный цикл на что-то из java.util.concurrency
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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