インタビューで、クラスを遅延ロードし、同期キーワードを使用しないシングルトン パターンの設計/実装を提案するように依頼されました。私は窒息してしまい、何も思いつきませんでした。それから、Java 並行性と並行 HaspMap について読み始めました。以下の実装を確認し、ダブル チェック ロックに関する問題や、この実装に関するその他の問題があるかどうかを確認してください。
package Singleton;
import java.util.concurrent.ConcurrentHashMap;
public final class SingletonMap {
static String key = "SingletonMap";
static ConcurrentHashMap<String, SingletonMap> singletonMap = new ConcurrentHashMap<String, SingletonMap>();
//private constructor
private SingletonMap(){
}
static SingletonMap getInstance(){
SingletonMap map = singletonMap.get(key);
if (map == null){
//SingletonMap newValue= new SingletonMap();
map = singletonMap.putIfAbsent(key,new SingletonMap());
if(map == null){
map = singletonMap.get(key);
}
}
return map;
}
}