Ehcache和多线程

15

ehcache默认支持多线程吗,还是需要进行配置更改? 使用Ehcache在多线程应用程序中,我发现数据库的访问次数实际上正在增加,即使我的缓存都是单例模式,也没有全局缓存可用于所有线程。有什么建议吗?

2个回答

14
这可能有助于回答你的问题,来自FAQ

从缓存中检索元素后修改其值是否线程安全?

请记住,缓存元素中的值可从多个线程全局访问。 修改该值本质上是不线程安全的。 更安全的方法是检索值,删除缓存元素,然后重新插入该值。

(我添加了强调)


1
另一个选择是查看ehcache显式锁定API:http://ehcache.org/documentation/explicitlocking.html,因为任何关于ehcache和多线程的讨论都可能不完整,如果不考虑这个方面的话。 - Abhijeet Kashnia

2
官方文档来看,Ehcache是专为高并发访问而构建和测试的,只要您不从多个线程修改Element即可运行良好。
但是,这并不意味着使用Ehcache可以使代码的其他部分线程安全。如果您使用相同的键从多个线程获取相同的值,则该实例可能会被共享,因此在修改之前需要了解自己在做什么。最好使用不变对象(如字符串)作为缓存值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接