2010-05-05 25 views
3

我需要緩存一些創建時間相當長的對象,而且我需要一次創建語義。應該可以同時爲不同的CacheKeys創建對象。我想我需要的東西(引擎蓋下)確實是這樣的:多線程Java緩存用於重創建對象?

ConcurrentHashMap<CacheKey, Future<HeavyObject>> 

是否有這樣我可以重新使用任何現有的開放源代碼實現?

回答

3

你看過GuavaMapMaker類嗎?我認爲它會做你需要的一切 - 雖然不是提供Future,但你給班級Function<? super K, ? extends V>,這是用來計算的價值。

回首您的文章,如果你真的需要值在那裏,而不是計算它們,也不會工作,以及 - 但我會離開這裏的建議的情況下計算的地圖是正常的您。

+0

沒有其他的,可以使用閉包;)我只希望我有閉包;) – krosenvold 2010-05-05 06:24:53

0

如果您需要一些高級Java緩存看看Ehcache或JBoss Cache。

我已經使用了第二個,雖然沒有開發(努力的目標是新的Infinispan項目),但它運行良好。您可以使用緩存加載器來定製對象到緩存邏輯。