Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2017, 18:58   #1
alexey_kip
Форумчанин
 
Регистрация: 19.11.2011
Сообщений: 198
Восклицание синхронизация нескольких коллекций

Добрый вечер. Появилась необходимость синхронизации нескольких коллекций. Пример кода
Код:
private Map<Integer, Device> mapDeviceIdToDeviceName;
    private Map<Long, Integer> mapUserIdToDeviceId;
    private Map<String, Integer> mapPlatformToDeviceId;

    public void addDevice(Device device) {
        mapDeviceIdToDeviceName.put(device.getId(), device);
        mapUserIdToDeviceId.put(device.getUserId(), device.getId());
        mapPlatformToDeviceId.put(device.getPlatform(), device.getId());
    }

    public synchronized void removeDevice(Device device) {
        mapDeviceIdToDeviceName.remove(device.getId());
        mapUserIdToDeviceId.remove(device.getUserId());
        mapPlatformToDeviceId.remove(device.getPlatform());
    }
Всякого рода проверки я в примере игнорировал, оставив только суть.
Хотелось бы быстро вытаскивать девайс по ID пользователя или названию платформы.
Каким образом можно синхронизировать добавление/удаление в данном случае девайсов?
Если я добавлю synchronized, то код будет полностью однопоточным. Хотелось бы этого избежать. Может кто-нибудь знает какую-то внешнюю библиотеку? В Apache Commons есть класс MultiKeyMap, но у него немного другая функция. Он делает не несколько ключей на одно значение, а 1 составной ключ, что в моем случае не подходит для решения задачи.

Последний раз редактировалось alexey_kip; 30.07.2017 в 19:16.
alexey_kip вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужна консультация по заданию(использование коллекций)) NickolayNest Общие вопросы по Java, Java SE, Kotlin 9 19.11.2014 23:21
Pascal Синхронизация и взаимодействие нескольких процессов Usya100 Фриланс 4 19.12.2013 12:01
Создание файла в java с использованием коллекций NickolayNest Общие вопросы по Java, Java SE, Kotlin 2 22.12.2011 02:01
Проблема с объявлением коллекций(Java Se) Tesmont Помощь студентам 0 30.04.2011 12:47
Классы коллекций Diman2008 Общие вопросы C/C++ 7 06.06.2008 09:57