powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / ConcurrentHashMap и List
8 сообщений из 33, страница 2 из 2
ConcurrentHashMap и List
    #38492115
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ммммм.
центральный список польз. должен быть синхронным.
Т.е. при закрытии сессии нужно убрать из списка.
Обычное дело для списка респондентов в операционке или ГУИ-контролах при перерисовке.
Добавив проверки на висяки получим решение.
...
Рейтинг: 0 / 0
ConcurrentHashMap и List
    #38492139
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ммммм.
центральный список польз. должен быть синхронным.
Т.е. при закрытии сессии нужно убрать из списка.
Обычное дело для списка респондентов в операционке или ГУИ-контролах при перерисовке.
Добавив проверки на висяки получим решение.

Не понял вас. У меня значением Hash таблицы является список. Он должен быть синхронизирован. С этим списком могут работать N потоков. Один из потоков может читать, другой писать, третий удалять. И все это может происходить "одновременно". Пользователь отключился - сессия удалилась из списка. Список стал "нулевым", т.е сессий с данным аккаунтом уже нет - удалился сам список из хэш таблицы. Вопрос как синхронизировать список внутри хэш таблицы? Пока остановился на CopyOnWriteArrayList. Но хочется чего-то подобного ConcurrentHashMap но только для списка, ведь с ним тоже в программе работает много потоков, и читают и удаляют, добавляют. И никаких с ним проблем.
...
Рейтинг: 0 / 0
ConcurrentHashMap и List
    #38492171
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavelМожет мне кто-нибудь объяснить? Как я понимаю в этом случае remove и add потокобезопасны? Т.е если какой-то поток добавляет что-то в лист, то поток который хочет удалить будет ожидать завершения удаления и наоборот? А чтобы синхронизировать и перебор(все ждут пока идет перебор) нужно делать так?
Код: java
1.
2.
3.
4.
5.
6.
7.
Collection c = Collections.synchronizedCollection(myCollection);
     ...
  synchronized(c) {
      Iterator i = c.iterator(); // Must be in the synchronized block
      while (i.hasNext())
         foo(i.next());
  }

Нет. Потоко безопасность не распространяется на составные операции, как то "взять элемент из итератора, а потом его удалить".
С точки зрения итерирования synchronizedCollection никак вам не поможет.
...
Рейтинг: 0 / 0
ConcurrentHashMap и List
    #38492181
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavel,
не нужно делать Один ко многим из списков.
Если убрать слово поток и заменить его на UserID+SessionID как ключик списка.
То, параллельно работают 3 юзверя в списке из 3-х элементов.
В чём проблема и где тут Null ошибка?
ЗЫ
SessionID - ключик в списке?
...
Рейтинг: 0 / 0
ConcurrentHashMap и List
    #38492193
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjvС точки зрения итерирования synchronizedCollection никак вам не поможет.
В CopyOnWriteArrayList мое спасение? :) Правда памяти жрет не мало :(
...
Рейтинг: 0 / 0
ConcurrentHashMap и List
    #38492194
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavel,
Коллега, ну вам же дали уже ответ, что вы продолжаете упорствовать со своими сомнениями? ПО вашим требованиям, вам нужна конкуретнтая мапка, в которой будет сидеть конкурентная коллекция. Ну так и делайте это, ничего кривого в этом нет:
ConcurrentHashMap<Integer, CopyOnWriteArrayList<Session>>
ConcurrentHashMap<Integer, ConcurrentArrayQueue<Session>>
ConcurrentHashMap<Integer, ConcurrentLinkedQueue<Session>>
ConcurrentHashMap<Integer, ConcurrentLinkedDeque<Session>>

Громоздко не значит "криво".
...
Рейтинг: 0 / 0
ConcurrentHashMap и List
    #38739910
D01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
D01
Гость
List<Session> userSessions = Server.USER_SESSIONS.get(session.mUserId);
synchronized (userSessions) {
///Все операции с userSessions
}

разве это не ответ на вопрос?
...
Рейтинг: 0 / 0
ConcurrentHashMap и List
    #38742278
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю, топикстартеру надо вооооот это:
http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/ConcurrentHashMultiset.html
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / ConcurrentHashMap и List
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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