Kev*_*eid 4 java collections multithreading caching
我想要一个Java集合:
Objects 映射到Objects(不是String或仅限于受限制的键)如果在多个线程中同时缓存未命中导致冗余计算,则可以.典型的情况是缓存首先由一个线程填充.
甲synchronized围绕线程安全哈希表块失败的有效阅读的标准.线程局部缓存很简单,但意味着新线程很昂贵,因为它们具有缓存的完整副本.
我们可以将Java 1.5内置函数或一个或多个类文件复制到我们的MIT许可项目中,而不是大型外部库.
使用java并发hashmap
ConcurrentHashMap<object, object> table;
public object getFromCache(object key)
{
value = table.get(key);
if (value == null)
{
//key isn't a key into this table, ie. it's not in the cache
value = calculateValueForKey(key)
object fromCache = table.putIfAbsent(key, value);
}
return value;
}
/**
* This calculates a new value to put into the cache
*/
public abstract object calculateValueForKey(object key);
Run Code Online (Sandbox Code Playgroud)
Nb这不再是多线程缓存的一般解决方案,因为它依赖于所声明的事物,即对象是不可变的,因此对象等价并不重要.
| 归档时间: |
|
| 查看次数: |
4458 次 |
| 最近记录: |