|
|
|
ConcurrentHashMap и List
|
|||
|---|---|---|---|
|
#18+
ммммм. центральный список польз. должен быть синхронным. Т.е. при закрытии сессии нужно убрать из списка. Обычное дело для списка респондентов в операционке или ГУИ-контролах при перерисовке. Добавив проверки на висяки получим решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2013, 17:02 |
|
||
|
ConcurrentHashMap и List
|
|||
|---|---|---|---|
|
#18+
Petro123ммммм. центральный список польз. должен быть синхронным. Т.е. при закрытии сессии нужно убрать из списка. Обычное дело для списка респондентов в операционке или ГУИ-контролах при перерисовке. Добавив проверки на висяки получим решение. Не понял вас. У меня значением Hash таблицы является список. Он должен быть синхронизирован. С этим списком могут работать N потоков. Один из потоков может читать, другой писать, третий удалять. И все это может происходить "одновременно". Пользователь отключился - сессия удалилась из списка. Список стал "нулевым", т.е сессий с данным аккаунтом уже нет - удалился сам список из хэш таблицы. Вопрос как синхронизировать список внутри хэш таблицы? Пока остановился на CopyOnWriteArrayList. Но хочется чего-то подобного ConcurrentHashMap но только для списка, ведь с ним тоже в программе работает много потоков, и читают и удаляют, добавляют. И никаких с ним проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2013, 17:17 |
|
||
|
ConcurrentHashMap и List
|
|||
|---|---|---|---|
|
#18+
GorloPavelМожет мне кто-нибудь объяснить? Как я понимаю в этом случае remove и add потокобезопасны? Т.е если какой-то поток добавляет что-то в лист, то поток который хочет удалить будет ожидать завершения удаления и наоборот? А чтобы синхронизировать и перебор(все ждут пока идет перебор) нужно делать так? Код: java 1. 2. 3. 4. 5. 6. 7. Нет. Потоко безопасность не распространяется на составные операции, как то "взять элемент из итератора, а потом его удалить". С точки зрения итерирования synchronizedCollection никак вам не поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2013, 17:36 |
|
||
|
ConcurrentHashMap и List
|
|||
|---|---|---|---|
|
#18+
GorloPavel, не нужно делать Один ко многим из списков. Если убрать слово поток и заменить его на UserID+SessionID как ключик списка. То, параллельно работают 3 юзверя в списке из 3-х элементов. В чём проблема и где тут Null ошибка? ЗЫ SessionID - ключик в списке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2013, 17:39 |
|
||
|
ConcurrentHashMap и List
|
|||
|---|---|---|---|
|
#18+
cdtyjvС точки зрения итерирования synchronizedCollection никак вам не поможет. В CopyOnWriteArrayList мое спасение? :) Правда памяти жрет не мало :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2013, 17:42 |
|
||
|
ConcurrentHashMap и List
|
|||
|---|---|---|---|
|
#18+
GorloPavel, Коллега, ну вам же дали уже ответ, что вы продолжаете упорствовать со своими сомнениями? ПО вашим требованиям, вам нужна конкуретнтая мапка, в которой будет сидеть конкурентная коллекция. Ну так и делайте это, ничего кривого в этом нет: ConcurrentHashMap<Integer, CopyOnWriteArrayList<Session>> ConcurrentHashMap<Integer, ConcurrentArrayQueue<Session>> ConcurrentHashMap<Integer, ConcurrentLinkedQueue<Session>> ConcurrentHashMap<Integer, ConcurrentLinkedDeque<Session>> Громоздко не значит "криво". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2013, 17:43 |
|
||
|
ConcurrentHashMap и List
|
|||
|---|---|---|---|
|
#18+
List<Session> userSessions = Server.USER_SESSIONS.get(session.mUserId); synchronized (userSessions) { ///Все операции с userSessions } разве это не ответ на вопрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 20:03 |
|
||
|
ConcurrentHashMap и List
|
|||
|---|---|---|---|
|
#18+
Я думаю, топикстартеру надо вооооот это: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/ConcurrentHashMultiset.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2014, 23:08 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38492194&tid=2126626]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
169ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 486ms |

| 0 / 0 |
