У меня проблема с доступом к Ehcache, когда Thread1 помещает новый ключ / значение в кеш, а Thread2 пытается его прочитать. Read by Thread2 не возвращает значение, вставленное Thread1.
Обратите внимание, что первый метод вызывается при запуске приложения, а второй вызывается почти одновременно в REST-контроллере. Также в примере ниже я использую BlockingCache, но он также был протестирован с простым кешем. Явная блокировка также была проверена.
Это выглядит так:
private void processThread1(Object object) {
BlockingCache blockingCache = new BlockingCache(getCache());
blockingCache.put(new Element(object.getKey(), object));
}
private void processThread2(Object object) {
BlockingCache blockingCache = new BlockingCache(getCache());
// this value is not updated by processThread1(..) when
// it's accessed, although processThread1(..) method call
// finishes before this method is called
SomeObject someObject = blockingCache.get(object.getKey());
}
Cache getCache() {
return cacheManager.getCache(cacheName);
}