У меня есть класс кеша, который основан на ConcurrentHashMap. Этот кеш используется для хранения результатов, полученных из относительно медленной службы справочных данных.Кэш для параллельного запроса
Одна из проблем заключается в том, что, когда несколько потоков пытаются получить ключ, который не существует, оба потока будут отправляться и извлекать один и тот же ключ из справочной службы данных, что приводит к двум вызовам справочных данных.
Я собираюсь улучшить реализацию кэша, чтобы только один из потоков запрашивал службу справочных данных.
Есть ли стандартная реализация для этого?
google 'memoizer ConcurrentHashMap' – ZhongYu
Есть небольшие кэши, такие как Goggle Guava cache или [cache2k] (http://cache2k.org), которые по умолчанию имеют желаемое поведение. В Guava вам нужно сделать LoadCache, в cache2k вам нужно определить источник кеша. – cruftex