【发布时间】:2012-12-03 23:55:16
【问题描述】:
我们有一个多线程应用程序,它大量使用 Oracle Coherence 3.5 L1/L2 缓存(1k 请求/秒),其中性能至关重要...
我需要同步对
CacheFactory.getCache()的访问吗?我应该为后续请求重用
NamedCache结果吗?
目前它正在执行以下操作以最小化对 CacheFactory 的调用并同步对它的访问...
static ConcurrentHashMap<String, NamedCache> cacheMap = new ConcurrentHashMap<String, NamedCache>();
protected static NamedCache getCache(String cacheName)
{
NamedCache cache = cacheMap.get(cacheName);
if (cache == null)
{
cache = CacheFactory.getCache(cacheName);
cacheMap.put(cacheName, cache);
}
return cache;
}
更新:经过一番探索,这似乎是不必要的,因为 Coherence API 应该是线程安全的......似乎我可以简化为这个,对吗?
protected static NamedCache getCache(String cacheName)
{
return CacheFactory.getCache(cacheName);
}
【问题讨论】:
标签: oracle-coherence