多執行緒 單例模式之懶漢

2021-10-03 20:45:50 字數 1138 閱讀 1554

/**

* 1. 懶漢(延遲載入)

* 2. 正確

* 3. 效率還比較高

* 通過

* 1. volatile 的引入,目的解決 ins = new ...(); 重排序帶來的問題

* 2. synchronized 的引入,目的是解決原子性問題

* 3. 見方法注釋

*/public

class

lazysingleton3

//乙個獲得 ins 的方法

public

static lazysingleton3 getinstance3()

}}return ins;

}//建立乙個執行緒的類

static

class

mythread

extends

thread

}//將這個程式以多執行緒執行

public

static

void

main

(string[

] args)

for(

int i =

0; i <

20; i++)/*

單例模式之懶漢1 ins1 = 單例模式之懶漢1.getinstance();

單例模式之懶漢1 ins2 = 單例模式之懶漢1.getinstance();

單例模式之懶漢1 ins3 = 單例模式之懶漢1.getinstance();

system.out.println(ins1 == ins2);

system.out.println(ins2 == ins3);

*/}}

懶漢の單例模式:

單例:只例項化乙個物件。

與餓漢的開局就初始化不同,懶漢只是在有執行緒呼叫它時才會初始化物件,此舉目的為節省記憶體空間。

若無synchronized 則會存在原子性不能保證的問題,可能會new出多個物件,不符合單例的情況。

若無外邊的if(ins==null),那麼會導致整個**效率變低,因為在第一次new物件後,這個鎖依舊會被互斥執行緒搶。

若無全域性變數 ins 前的volatile,那麼ins這個物件內部的(開闢空間,初始化,給引用賦值)三個大步驟會有重排序的問題。

設計模式 單例模式之懶漢式 多執行緒

package cn.itcast 03 單例模式 餓漢式 類一載入就建立物件 懶漢式 用的時候,才去建立物件 面試題 單例模式的思想是什麼?請寫乙個 體現。開發 餓漢式 是不會出問題的單例模式 面試 懶漢式 可能會出問題的單例模式 思想 a 懶載入 延遲載入 用的時候才去載入 b 執行緒安全問題 ...

設計模式之單例模式 2 懶漢式及其多執行緒問題

學習設計模式的日常demo 懶漢式 執行緒不安全 實現 public class lazysingleton01 class lazysingleton private static lazysingleton instance 提供靜態方法,當使用該方法時,才去建立例項物件 public stat...

單例模式之懶漢式

1.思想 為了解惡漢式設計的弊端,我們在建立物件時不會預設例項化。2.解決方法,利用if語句來解決重複空間的問題 public class singleton1 private static singleton1 single null public static singleton1 getsin...