懶漢式(線程安全)
有缺點說明
-
解決了線程不安全問題
-
效率太低了,每個線程在想獲得類的實例時候,執行getInstance()方法都要進行同步.而其實這個方法只執行了一次實例化代碼就夠了,后面的想獲取該類實例,直接return就行了.方法進行同步效率太低
-
結論: 在實際開發中,不推薦使用這種方式
代碼演示
package com.atguigu.principle.singleton.type04;/**
* @author victor
* @site https://victorfengming.github.io/
* @company XDL
* @project java_mode
* @package com.atguigu.principle.singleton.type04
* @created 2021-02-02 19:29
* @function ""
*/
public class Singleton04 {public static void main(String[] args) {Singleton ins = Singleton.getInstance();Singleton ins2 = Singleton.getInstance();System.out.println(ins);System.out.println(ins.hashCode());System.out.println(ins2);System.out.println(ins2.hashCode());System.out.println(ins == ins2);}}// 懶漢式 (線程安全_ 同步放法_)
class Singleton{private static Singleton instance;private Singleton() {}// 提供一個靜態的公有方法 加入了同步處理的代碼// 解決線程安全問題// 即懶漢式// 我們在這里加一個關鍵字 synchronizedpublic static synchronized Singleton getInstance() {if (instance == null) {instance = new Singleton();}return instance;}
}
更多:在這里