1. 程式人生 > >java單例餓漢和懶漢模式

java單例餓漢和懶漢模式

面試時,經常會問到單例模式。

單例模式的兩種方式:
一種是餓漢式,就是在類初始化的時候,建立物件,這種方式是執行緒安全的,在程式執行期間就這一個物件。

另一種是懶漢式,懶漢式是在第一次使用時才建立物件,但是如果在多執行緒環境中要考慮執行緒安全問題。

比較喜歡的方式:餓漢式,不用考慮執行緒安全問題。

怎麼區分餓漢和懶漢模式?

餓漢:餓了,飢不擇食,系統一執行就建立物件,不考慮太多的問題
懶漢:就是懶,就是不想建立物件,即使執行建立物件,也要說一大堆的問題,什麼多執行緒、安全,物件重複等問題。總之一句話:懶,就是不想建立。

餓漢

系統一執行就建立物件,不考慮太多的問題

public class
Singleton{ //類載入時就初始化 private static final Singleton instance = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return instance; } }

懶漢

就是不想建立物件。即使執行建立物件,也要考慮多執行緒、安全,物件重複等問題。
總之一句話:懶!

public class Singleton {

    private volatile static
Singleton instance = null; //宣告成 volatile 保證編譯器不進行優化 private Singleton (){} public static Singleton getSingleton() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance =
new Singleton(); } } } return instance; } }

相關推薦

java懶漢模式

面試時,經常會問到單例模式。 單例模式的兩種方式: 一種是餓漢式,就是在類初始化的時候,建立物件,這種方式是執行緒安全的,在程式執行期間就這一個物件。 另一種是懶漢式,懶漢式是在第一次使用時才建立物件,但是如果在多執行緒環境中要考慮執行緒安全問題。 比較喜歡的方

模式懶漢

接下來就說下單例模式了,這個在實際應用還是比較常用的! 首先,單例分為懶漢式和餓漢式: 餓漢式:類載入的時候,建立物件。 因此類載入速度慢, 執行緒相對安全 懶漢式:類載入的時候,不會建立物件,呼叫時

懶漢模式

單例模式 一個類只建立一個例項,每次都獲取的同一個物件 單例模式分為餓漢模式和懶漢模式 單例模式的三要素: 1、構造方法私有化 2、靜態屬性指向例項 3、public static 的xx方法要返回例項 餓漢模式 立即載入,無論是否用到這個物件都會載入 無論如何

式各自的有缺點

單例模式應用於一個類只有一個例項的情況,並且為其例項提供一個全域性的訪問點。 特點: 1.一個類只有一個例項 2.自己建立這個例項 3.整個系統只能用這個例項 應用場景 外部資源:每臺計算機有若干個印表機,但只能有一個PrinterSpooler,以避免兩個列

模式中final關鍵字的作用

原文: http://www.tuicool.com/articles/2Yjmqy 併發程式設計網:http://ifeve.com/java-memory-model/ 總結: Final 變數在併發當中,原理是通過禁止cpu的指令集重排序(重排序詳解http://ifeve.com/java-mem

Java 懶漢式

轉載請註明出處:http://blog.csdn.net/mr_liabill/article/details/48374921   來自《LiaBin的部落格》 單例模式很常見,在面試中也會經常直接讓你寫一個單例出來 單例模式寫法一般分為兩種,懶漢式和餓漢式 餓漢式

Java設計模式懶漢設計模式

1.單例模式 定義:一個類只允許產生一個例項化物件。 a.物件如何產生? 通過類的構造方法 b.要想限制物件的產生? 通過構造方法限制,構造方法私有化,類外部無法產生例項化物件。 餓漢式單例:上來就new //餓漢式單例 class Singleton{

java 模式之執行緒安全的模式懶漢模式

單例模式 解決的問題:保證一個類在記憶體中的物件唯一性. 比如:多程式讀取一個配置檔案時,建議配置檔案封裝成物件。會方便操作其中資料,又要保證多個程式讀到的是同一個配置檔案物件, 就需要該配置檔案物件在記憶體中是唯一的。 如何保證物件唯一性呢? 思想: 1,不讓其他程式建立

【C++】模式模式懶漢模式

餓漢模式:提前建立一個靜態的類物件,把所有能夠建立物件的模組全部私有化,從外部需要建立類物件時只能返回事先建立好的唯一物件。就像一個特別飢餓的人,提前準備好食物,只要餓了,就可以立刻食用。 /*惡漢模式--單例模式*/ #include<iostream> using namespa

模式模式懶漢模式

什麼是單例?單例就是系統執行過程中有且僅有一個例項存在, 即:一個類只有一個例項--最基本的要求(只提供私有構造器),它必須自己建立這個例項(定義靜態的該類的私有物件),它必須自行向整個系統提供這個例項(提供一個靜態的公有方法,返回建立或者獲取本身的靜態私有物件); 單例模

模式模式懶漢模式

單例模式也叫單件模式。Singleton是一個非常常用的設計模式,幾乎所有稍微大一些的程式都會使用到它,所以構建一個執行緒安全並且高效的Singleton很重要。 單例模式的特點: 1>單例類保證全域性只有一個唯一例項物件。 2>單例類提供獲取

JAVA設計模式懶漢式的區別)

定義:確保一個類只有一個例項,而且自行例項化並向整個系統提供這個例項。 型別:建立類模式 類圖: 類圖知識點: 1.類圖分為三部分,依次是類名、屬性、方法 2.以<<開頭和以>>結尾的為註釋資訊 3.修飾符+代表public,-代表p

java模式,懶漢式式的區別,雙層鎖式等

單例就是該類只能返回一個例項。 單例所具備的特點: 1.私有化的建構函式 2.私有的靜態的全域性變數 3.公有的靜態的方法 一般常見到的是3種: 餓漢式(執行緒不安全): public class Singleton1 {       private Singleton

Java模式懶漢模式模式

單例模式 單例模式(Singleton Pattern)是 Java 中最簡單的設計模式之一。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。 這種模式涉及到一個單一的類,該類負責建立自己的物件,同時確保只有單個物件被建立。這個類提供了一種訪問其唯一

Java 模式懶漢

java單例就是一個類始終只例項化一次 餓漢模式:在程式啟動,類載入的時候就初始化: public class Singleton{ private static Singleton instance = new Singleton(); private S

JAVA中的模式及jdk中Runtime類的模式實現方式詳解

一、描述 單例模式是一種非常常見的設計模式,即一個類只能有一個物件(例項),一般通過將該類的構造器私有化,來阻止在該類外建立該類的物件,並提供給外界一個唯一的物件(這個物件在該類中建立)。        java中的單例模式常見的有兩種實現方式,一種是惡漢方式,即將該類物件

java模式優缺點(懶漢模式模式,雙重檢查加鎖模式

三種單例模式實際都是有運用的。 優點:延遲載入 缺點:不加同步的懶漢式是執行緒不安全的,加了synchronized之後就變成執行緒安全的了 public class Singleton { private static Singleton singleto

模式--懶漢、多線程以及多線程下改進

desc 懶漢 http ret locker syn bubuko 線程 info 代碼註釋有介紹 package singleton; /** * @author: ycz * @date: 2018/12/24 0024 22:15 * @descripti

Java模式式,懶漢式),我更願稱作(傳統銷售式,飢餓營銷式)

單例模式是一個很經典的設計模式,在java中無處不在。比如spring中的bean注入,工具類的編寫等。但是在剛接觸單例模式時候,我總對這個飽漢式和餓漢式的稱呼理解不好。下面來講一講我自己的理解。1)餓漢模式(傳統銷售式) class A{ private A(){} privat

Java模式中的飽

Java中單例模式是筆試的常見題目,包括飽漢式和飢漢式,具體程式碼實現如下:飽漢式:public class SingleTon { private SingleTon(){} priv