簡體   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