我们有一个多线程应用程序,它大量使用 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);
}