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