Я пытаюсь реализовать сервлет для мониторинга GPS и пытаюсь создать простой кеш, потому что я думаю, что он будет быстрее, чем SQL
запрос на каждый запрос Http. простая схема:hashmap cache in servlet
в методе init()
, я читаю одну точку для каждого автомобиля в HashMap
(идентификатор автомобиля = ключ, местоположение в json = значение). после этого, какой-то запрос попытается прочитать эти пункты, и некоторый запрос попытается обновить (один автомобиль обновит один пункт). Конечно, я хочу, чтобы свести к минимуму синхронизации, так что я прочитал документацию: http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html
Обратите внимание, что эта реализация не синхронизирована. Если несколько потоков обращаются к карте хешей одновременно, и по крайней мере один из потоков изменяет структуру структурно, она должна быть синхронизирована извне. (Структурная модификация не является любая операция, которая добавляет или удаляет один или несколько отображений, просто изменяя значение, связанное с ключом, который экземпляр уже содержит не структурная модификация.)
Если я прав, то нет любая синхронизация в моей задаче, потому что я делаю только «не структурную модификацию == изменение значения, связанного с ключом, который уже содержит экземпляр»). это правильное утверждение?
но если нет добавления (кроме как в init(), которые выполняются в однопоточном режиме), а только для изменения, все еще неправильно? –