欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java 單例 和單線程

李中冰2年前8瀏覽0評論

在Java編程語言中,單例是常見的設計模式之一。單例即指某一個類在整個程序中只有一個實例對象。單例可以被用作配置文件、線程池、數據庫連接池等。下面我們來看一下如何實現一個單例類。

public class Singleton {
private static Singleton instance;
private Singleton(){} //私有化構造函數
public static Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
}

以上代碼中,我們通過構造函數將Singleton私有化,避免了其他類通過直接的類構造器來生成新的實例。此外,我們通過getInstance()方法來獲取單例類的唯一實例。在getInstance()方法中,如果instance為null,則我們會生成一個新的實例,否則我們實例化的對象已經被創建,直接返回現有的實例即可。這種方法實現的單例是懶加載的,即用到的時候才創建實例,可以避免啟動時就創建實例,節省資源。

此外,在單線程中,我們可以使用以上代碼實現,但是在多線程中需要對getInstance()方法進行改進。我們需要在其中加入synchronized關鍵字,避免多個線程同時訪問getInstance()方法,從而導致生成多個實例的可能性。

public class Singleton {
private static Singleton instance;
private Singleton(){} //私有化構造函數
public static synchronized Singleton getInstance(){ //在方法上加synchronized關鍵字
if(instance == null){
instance = new Singleton();
}
return instance;
}
}

以上代碼中,我們在getInstance()方法上加入了synchronized關鍵字,避免了多個線程同時進入getInstance()方法的可能性。這種方法是線程安全的。