實現單例的幾種方式

2021-09-21 18:03:34 字數 1605 閱讀 7160

面試:你懂什麼是分布式系統嗎?redis分布式鎖都不會?>>>

餓漢式單例:在使用該類的靜態成員時,無論有沒有使用單例類,都會建立單例物件

/**

* 餓漢式單例:在使用該類的靜態成員時,無論有沒有使用單例類,都會建立單例物件

* * @author wangpeng

* */

public class singleton

public static int staticmember = 0;

private static singleton instance = new singleton();

public static singleton getinstance()

public static void createstring()

public static void main(string args)

}

懶漢式單例:通過判斷單例物件是否為null和加同步關鍵字,保證只在第一次使用單例類建立單例類,避免建立重量級單例類慢的問題。在高併發情況下,同步關鍵字的使用可能會降低效能

/**

* 懶漢式單例:通過判斷單例物件是否為null和加同步關鍵字,保證只在第一次使用單例類建立單例類,避免建立重量級單例類慢的問題。在高併發情況下,同步關鍵字的使用可能會降低效能

* * @author wangpeng

* */

public class lazysingleton

public static int staticmember = 0;

private static lazysingleton instance = null;

public static synchronized lazysingleton getinstance()

return instance;

} public static void createstring()

public static void main(string args)

}

使用內部類來實現單例:(1)由於類載入是單執行緒的,故可以替代synchronized關鍵字解決併發問題。 (2)當單例類載入時,其內部類不會初始化。只當呼叫getinstance方法時,才會建立單例類

/**

* 使用內部類來實現單例:(1)由於類載入是單執行緒的,故可以替代synchronized關鍵字解決併發問題。

* (2)當單例類載入時,其內部類不會初始化。只當呼叫getinstance方法時,才會建立單例類

* * @author wangpeng

* */

public class staticsingleton

/*** 持有單例物件的內部類

*/private static class singletonholder

public static staticsingleton getinstance()

public static void createstring()

public static void main(string args)

}

java單例的幾種實現方式

1.懶漢式 執行緒不安全,如果兩個執行緒同時執行到了 if instance null public static singleton getinstance return instance 執行緒安全的,每次呼叫方法都會對物件枷鎖,非常影響效能 public class singleton pub...

單例模式實現的幾種方式

單例模式三個主要特點 1 構造方法私有化 2 例項化的變數引用私有化 3 獲取例項的方法共有。package com.ctl.singleton 懶漢式單例 該模式的特點是類載入時沒有生成單例,只有當第一次呼叫 getlnstance 方法時才去建立這個單例 注意 如果編寫的是多執行緒程式,則不要刪...

單例模式的幾種實現方式

單例模式莫過於是我們最常用的設計模式之一了,它的優缺點就是 優也單例,缺也單例 當然應用它方面優點還是較多些的,所以下面我們看看,常用的幾種實現方式有哪些吧。這種是最基本的實現方式,最大的問題就是不支援多執行緒,由於沒有加鎖,嚴格上並不算單例模式。public class singleton pub...