單例模式的4種寫法,你知道嗎?

2021-10-10 09:59:42 字數 1264 閱讀 4258

/**

* 懶漢式

* * @author by miao

* @date 2020/11/9 11:46

*/public

class

singletonone

public

static singletonone getinstance()

return instance;

}}

/**

* 懶漢式優化

* * @author by miao

* @date 2020/11/10 9:37

*/public

class

singletononeopt

public

static

synchronized singletononeopt getinstance()

return instance;

}}

/**

* 餓漢式

* * @author by miao

* @date 2020/11/10 9:40

*/public

class

singletontwo

public

static singletontwo getinstance()

}

/**

* @author by miao

* @date 2020/11/10 11:01

*/public

enum singletonthree

ps.列舉的天然特性保證了單例,天然的私有構造器,天然的執行緒安全性,未被大規模使用的原因是列舉出現的有點晚。
/**

* 雙重校驗鎖demo

* * @author miao

*/public

class

singletondemo

public

static singletondemo getinstance()

}}return instance;

}}

注意:

volatile的使用,為了防止暴露乙個未初始化的不完整單例例項;

雙重判空校驗,第乙個判斷避免了頻繁的加鎖,第二個判斷可以攔住多餘的建立例項的執行緒;

加鎖,保證了執行緒安全(只有乙個例項)

單例模式的4種寫法

餓漢式 執行緒安全的,但是會一直占用記憶體 public class singletoninstance private static final singletoninstance instance new singletoninstance public static singletoninst...

ThinkPHP的四種URL模式 你知道嗎

thinkphp支援四種url模式,可以通過設定url model引數來定義,包括普通模式 pathinfo rewrite和相容模式。url model 2,該url模式和pathinfo模式功能一樣,除了可以不需要在url裡面寫入口檔案,和可以定義.htaccess 檔案外。例如,我們可以增加如...

Filecoin的四種收益模式,你知道嗎?

在以往的區塊鏈技術上,算力是計算礦工貢獻的主要手段,算力受礦機的計算速度影響,算力越大,計算速度越快,礦工的收益越高。在這種激勵方式下,礦工會投入更多的算力來獲取更多的收益,從而導致了計算資源和電力能源的大量浪費。filecoin協議能從根本上規避以往區塊鏈的這種弊端,它作為ipfs的獎勵層,旨在激...