[英]Multithreading with classes
这是一个有趣的问题,但是我想知道每个人对这种设计模式的想法。
public class MyThreadedMap {
private ConcurrentHashMap<Integer, Object> map;
...
public class Wrapper {
public Object get(int index){
return map.get(index);
}
}
}
此时,多个线程将拥有自己的Wrapper实例,并且将使用wrapper.get(index)访问该映射。
我发现从拥有包装器到没有包装器的性能变化稍微好一点,这就是包装器有所帮助。 当我将同步放置在get方法上时,会严重影响性能。
这里到底发生了什么? 当实例化一个内部类时,我是否为每个实例创建该get方法的副本? 如果没有真正的性能提升,最好只是放弃包装器吗?
ConcurrentHashMap具有使同步开销最小化的奇特方法。 当您同步get方法时,它会施加正常的同步开销,从而影响性能。
如果Wrapper类中没有其他代码,则将其省略,因为它似乎未添加任何内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.