Ehcache & MultiThreading - PullRequest
       9

Ehcache & MultiThreading

14 голосов
/ 02 июня 2009

Поддерживает ли ehcache многопоточность по умолчанию или требует каких-либо изменений конфигурации? При многопоточности мое приложение с Ehcache обнаружило, что количество обращений к БД фактически увеличивается, т. Е. Нет глобального кеша, доступного для всех потоков, несмотря на тот факт, что мой кеш - все синглтон. Есть предложения?

Ответы [ 2 ]

12 голосов
/ 02 июня 2009

Это может помочь ответить на ваш вопрос, из FAQ :

Поточно ли можно изменять значения элемента после извлечения из кэша?

Помните, что значение в элементе кэша глобально доступно из нескольких потоков. По своей сути изменение потока не безопасно. Безопаснее извлечь значение, удалить элемент кэша, а затем повторно вставить значение.

(выделено мной)

1 голос
/ 23 октября 2015

Из официальной документации появляется информация о том, что она специально создана и протестирована для правильной работы при высококонкурентном доступе , если вы не изменили Element из нескольких потоков.

Но, конечно, это не означает, что использование Ehcache делает другие части вашего кода безопасными. Если вы извлекаете одно и то же значение из нескольких потоков (используя один и тот же ключ), экземпляр может быть общим, и вам необходимо знать, что вы делаете, прежде чем изменять его. Лучше всего использовать неизменяемые объекты, такие как строки, в качестве кэшированных значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...