繁体   English   中英

类的多线程

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM