2009-06-02 28 views
14

默認完成的Ehcache支持多線程還是需要更改一些配置? 在多線程我用的Ehcache應用程序,我發現DB命中數實際上是增加的,即沒有可用於所有的線程沒有全局高速緩存儘管我的緩存的都是單身。有什麼建議麼?的Ehcache和多線程

回答

11

這可能有助於回答你的問題,從the FAQ

是線程安全從緩存中檢索後,修改的元素值?

請記住,在高速緩存中元素的值是從多個線程全局訪問。 修改該值本質上不是線程安全的。檢索值,刪除緩存元素然後重新插入值更安全。

(重點由我加的)

+1

另一種方法是看的Ehcache明確鎖定API:http://ehcache.org/documentation/explicitlocking.html,因爲上了Ehcache和多線程的討論是沒有考慮這個方面可能是不完整的。 – 2011-07-15 15:46:55

1

official documentation似乎是專門構建和測試,你不從多個線程修改Element下高併發訪問運行良好,只要。

但是,當然,這並不意味着使用的Ehcache使你的代碼的線程的其他部分安全。如果您從多個線程(使用相同的鍵)獲取相同的值,那麼該實例可能是共享的,您需要在修改它之前知道您正在做什麼。最好似乎使用像字符串這樣的不可變對象作爲緩存值。