Java多執行緒 48 單例設計模式

2021-09-07 05:28:20 字數 1494 閱讀 2342

前面學習了多執行緒的一些知識,這篇來學習並掌握什麼是單例設計模式,以及常見的單例模式寫法有哪些。先來理解什麼是單例模式,單例就是保證類在記憶體中只有乙個物件。我們知道,類是可以通過多種方式去獲取物件,例如常見的new物件。在記憶體中只有乙個物件,如果這句話不好理解。這裡,很多人都用過selenium自動化測試,如果你的自動化用例是乙個接著乙個執行,整個過程driver就是保證唯一的物件,這個就是單例模式。相反,有些人是用多執行緒的方式去執行selenium自動化測試。本篇,我們就來學習和掌握單例設計模式。

1.餓漢式

餓漢模式是單例設計模式的一種,特點就是一上來就給你建立並返回物件,具體看看下面**。

package thread;

public class singleton_demo

}class singleton

//2. 建立本類物件

private static singleton s = new singleton();

//3. 對外提供公共的訪問方法

public static singleton getinstance()

}

一上來就使用new物件,意思就想吃了。相對餓漢式,還有一種懶漢式。

2.懶漢式

懶漢式又叫單例的延遲載入模式,意思就是比較懶,一上來不給你建立物件。而是需要做乙個判斷,你需要的時候才給你建立物件。

package thread;

public class singleton_demo

}class singleton

//2. 宣告引用,不建立物件

private static singleton s;

//3. 判斷,如果物件沒有建立才建立

public static singleton getinstance()

return s; }

}

3.餓漢式和懶漢式的區別

1.餓漢式是空間換時間,上來就建立物件,把空間(記憶體)浪費了,節省了時間。懶漢式是時間換空間,一上來只宣告引用,需要判斷才能建立物件,耗費了時間,節約了空間(記憶體)。不推薦用懶漢式。

2.在多執行緒訪問時,餓漢式不會建立多個物件,而懶漢式有可能會建立多個物件。

4.第三種單例模式

package thread;

public class singleton_demo

}class singleton

//2. 使用final,就不能改變s

public static final singleton s = new singleton();

}

第三種模式沒有名字,重點就是使用了關鍵字final,這樣s成員變數就不能被外部修改。

總結:1.什麼是懶漢式?(延遲載入模式)

2.懶漢式的弊端?

3.餓漢式和懶漢式的區別?

Java多執行緒20 單例設計模式

單例設計模式 保證類在記憶體中只有乙個物件。如何保證類在記憶體中只有乙個物件?1 控制類的建立,不讓其他類來建立本類的物件。private 2 在本類中定義乙個本類的物件。3 提供公共的訪問方式,例如 public static myobject getinstance 單例寫法兩種 1 餓漢模式。...

多執行緒 多執行緒 單例設計模式

多執行緒之 單例設計模式 餓漢式 多執行緒安全 1 餓漢式 class single static single getinstance public void show class a implements runnable class test catch interruptedexceptio...

Java單例設計模式,多執行緒下同步

單例模式的特點 只建立一次 私有的屬性 公有的訪問方法 單例模式的分類 懶漢 lazysingleton 預設不自動例項化,等到用的時候根據當前情況例項化,並且返回當前物件 惡漢 eagersingleton 在類第一次載入的時候強制例項化 用處 一般用在配置檔案的讀取,有些東西只需要載入一次,以後...