Ehcache одновременное чтение и запись из нескольких потоков - PullRequest
0 голосов
/ 30 октября 2018

У меня проблема с доступом к 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);
}
...