java單例的幾種實現方式

2021-07-07 05:06:12 字數 2101 閱讀 5446

1.懶漢式

執行緒不安全,如果兩個執行緒同時執行到了

if (instance == null)   

public static singleton getinstance()

return instance;

} }

執行緒安全的,每次呼叫方法都會對物件枷鎖,非常影響效能

public class singleton   

public static synchronized singleton getinstance()

return instance;

} }

執行緒安全的,double-check

public class singleton   

public static singleton getsingleton()

} }

return singleton;

} }

2.餓漢式的,這種是借助jvm的特性來實現的,因為靜態變數在類載入的時候就初始化完成了,所以不需要執行緒同步,缺點就是累載入時就完成了

public class singleton   

public static singleton getinstance()

}

3.靜態內部類,jvm在呼叫getinstance()時才會進行類的初始化

public class singleton   

private singleton (){}

public static final singleton getinstance()

}

4.通過列舉實現,列舉例項的建立時執行緒安全的,並且對序列化***

public enum singleton   

}

1.懶漢式

執行緒不安全,如果兩個執行緒同時執行到了

if (instance == null)   

public static singleton getinstance()

return instance;

} }

執行緒安全的,每次呼叫方法都會對物件枷鎖,非常影響效能

public class singleton   

public static synchronized singleton getinstance()

return instance;

} }

執行緒安全的,double-check

public class singleton   

public static singleton getsingleton()

} }

return singleton;

} }

2.餓漢式的,這種是借助jvm的特性來實現的,因為靜態變數在類載入的時候就初始化完成了,所以不需要執行緒同步,缺點就是累載入時就完成了

public class singleton   

public static singleton getinstance()

}

3.靜態內部類,jvm在呼叫getinstance()時才會進行類的初始化

public class singleton   

private singleton (){}

public static final singleton getinstance()

}

4.通過列舉實現,列舉例項的建立時執行緒安全的,並且對序列化***

public enum singleton   

}

java單例模式幾種實現方式

目錄 單例模式的五種實現方式 1 餓漢式 2 懶漢式 3 double checklock實現單例 4 靜態內部類實現模式 5 列舉類 執行緒安全,呼叫效率高,但是不能延時載入 public class imageloader public static imageloader getinstanc...

實現單例的幾種方式

面試 你懂什麼是分布式系統嗎?redis分布式鎖都不會?餓漢式單例 在使用該類的靜態成員時,無論有沒有使用單例類,都會建立單例物件 餓漢式單例 在使用該類的靜態成員時,無論有沒有使用單例類,都會建立單例物件 author wangpeng public class singleton public ...

java 基礎單例模式實現的幾種方式對比

1 餓漢式 執行緒安全,呼叫效率高,但是不能延時載入 public class imageloader public static imageloader getinstance 一上來就把單例物件建立出來了,要用的時候直接返回即可,這種可以說是單例模式中最簡單的一種實現方式。但是問題也比較明顯。單...