1. 程式人生 > >Java 多執行緒學習筆記(十一) 單例設計模式(延遲載入/懶漢模式)DCL解決執行緒安全問題

Java 多執行緒學習筆記(十一) 單例設計模式(延遲載入/懶漢模式)DCL解決執行緒安全問題

package extthread;

import test.MyObject;

public class MyThread extends Thread {

	@Override
	public void run() {
		System.out.println(MyObject.getInstance().hashCode());
	}

}

package test;

public class MyObject {

	private volatile static MyObject myObject;

	private MyObject() {
	}

	// 使用雙檢測機制來解決問題
	// 即保證了不需要同步程式碼的非同步
	// 又保證了單例的效果
	public static MyObject getInstance() {
		try {
			if (myObject != null) {
			} else {
				// 模擬在建立物件之前做一些準備性的工作
				Thread.sleep(3000);
				synchronized (MyObject.class) {
					if (myObject == null) {
						myObject = new MyObject();
					}
				}
			}
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		return myObject;
	}
	// 此版本的程式碼稱為:
	// 雙重檢查Double-Check Locking

}

package test.run;

import extthread.MyThread;

public class Run {

	public static void main(String[] args) {
		
		
		MyThread t1 = new MyThread();
		MyThread t2 = new MyThread();
		MyThread t3 = new MyThread();

		t1.start();
		t2.start();
		t3.start();

	}

}

單例設計模式DCL雙檢查鎖機制

執行結果:
322722178
322722178
322722178


相關推薦

第六章模式執行——立即載入“餓漢模式”與延遲載入懶漢模式

立即載入就是使用類的時候已經將物件建立完畢了,也稱為“餓漢模式” package test01; public class MyObject { // 建立物件 private static MyObject object = new MyObject(); private MyObjec

Java 執行學習筆記 設計模式延遲載入/懶漢模式DCL解決執行安全問題

package extthread; import test.MyObject; public class MyThread extends Thread { @Override publi

執行學習筆記四——CountDownLatch、 CyclicBarrie、Semaphore的使用

CountDownLatch CountDownLatch的構造器: public CountDownLatch(int count) { if (count < 0) throw new IllegalArgumentExceptio

python學習筆記叠代和其他

技術分享 img 余數 商品列表 步長 取數 sorted函數 學習 四舍五入 yiled 面相過程編程 造好內容,統一發給下面 上面這個是傻瓜版 內置函數 print(divmod(10,3)) 將10除以3,顯示商和余數 enumerate函數,顯示元素及它

Java學習筆記:Java面向對象的三大特性之繼承

類構造 接下來 多重 通過 prot 圖片 等級 ++ class Java面向對象的三大特性之繼承 一:繼承的概念;   繼承是java面向對象編程技術的一塊基石,因為它允許創建分等級層次的類。   繼承就是子類繼承父類的特征和行為,使得子類對象(實例)具有父

Java Web 學習筆記:RestEasy統一處理異常

JBoss RestEasy框架配置異常統一處理 前提 利用JBoss restEasy框架搭建的restful java web後臺應用 希望通過統一的方式對restful介面丟擲的異常進行

設計模式C++學習筆記c/c++面試筆試題

一、指標與引用有什麼區別? 1、指標會佔用記憶體,引用不佔用記憶體。 2、引用在定義時必須初始化。 3、沒有空的引用,但是有空的指標。 二、static關鍵的幾個作用 1、函式體內的static變數的作用範圍為該函式體,該變數記憶體只分配一次,因此其值在下次再呼叫該函式時

《SAS編程與數據挖掘商業案例》學習筆記

ror otto -c ace mov 得到 replace 讀書筆記 集中 繼續讀書筆記,本文重點側重sas觀測值的操作方面, 主要包含:輸出觀測值、更新觀測值、刪除觀測值、停止輸出觀測值等

學習筆記節課

作業linux和windows互傳文件 互傳文件 先安裝一個工具 yum install -y lrzsz 使用sz命令 就可以把linux上的文件傳到windows上去。 rz 就可以把windows上的東西傳到linux上 (當前目錄) 前提是用 xshell securecrt putty是

學習筆記第二節課

作業yum更換國內源 有時候自帶的yum源,不好用,因為自帶的裏面的網址資源是國外的。從國內下載很慢。 想辦法更改國內的源。 實驗: 先把dvd給刪除了, 然後把之前刪除的給cp回來。 然後刪除 CentOS-Base.repo 改一個CentOS7-Base-163.repo 新的需要去下載,寫入下載

Java編程思想》筆記章 持有對象

而且 位置 pty dex 優先級 poll IT ise 註意 1.保存對象引用 1.數組,數組具有固定大小 2.容器類,可自動調節大小 2.容器類 List Set Queue Map 及常用的實現類 2.1 Collectioon (接口) 保存獨立

Java編程思想》筆記 第二章 並發

插入 tde tran 並發模式 html https 64位 target 不可用 1.定義任務 實現Runnable 接口的類就是任務類(任務類不一定是實現Runnable接口的類)。 實現Runnable 接口,重寫run()方法,run方法的返回值只能是 vo

深度學習花書學習筆記章 實踐方法論

效能度量 根據任務需求,需要有不同的效能度量方式,常規度量方式如下: _ 真 假 認為真 true positive(TP) false positive(FP)

kubernetes學習筆記:kubernetes dashboard認證及分級授權

第一章、部署dashboard 作為Kubernetes的Web使用者介面,使用者可以通過Dashboard在Kubernetes叢集中部署容器化的應用,對應用進行問題處理和管理,並對叢集本身進行管理。通過Dashboard,使用者可以檢視叢集中應用的執行情況,同時也能夠基於Dashboard建立或修

【OS學習筆記 真實模式:中斷-軟中斷和硬中斷基本原理

上一篇文章我們模擬作業系統的載入器程式,使用匯編語言實現了一個程式載入器:點選連結檢視上一篇文章:程式載入器的實現原理 本篇文章,是真實模式學習的結尾。在經過了那麼多坎坷,終於學完了8086的真實模式!!!最重要的是本篇文章沒有彙編程式碼,只講原理~~ 今天的內容比較簡單,學習一下中

opencv學習筆記:影象修復

當我們的照片有劃痕或遭到人為的塗鴉(比如馬賽克)時, 如果我們想讓這些遭到破壞的圖片儘可能恢復到原樣,Opencv能幫我們做到嗎?答案是肯定的。 那麼影象修復技術的原理是什麼呢? 簡而言之,就是利用那些已經被破壞的區域的邊緣, 即邊緣的顏色和結構,根據這些影象留下的資訊去

機器學習筆記——整合學習之Boosting及AdaBoosting

   上一篇記述了Bagging的思維與應用 : https://blog.csdn.net/qq_35946969/article/details/85045432    本篇記錄Boosting的思想與應用:AdaBoosting、GDBT(

Maven 學習筆記:Maven倉庫(快照版本)

 Maven倉庫(快照版本) ---------- 在Maven的世界中,任何一個專案或者構件都必須有自己的版本。版本的值可能是1.0.0,1.3-alpha-4,2.0,2.1-SNAPSHOT或者2.1-20091214.221414-13。其中,1.0、1.3-a

Oracle學習筆記

Oracle學習筆記第十一天 備份和恢復和遷移 這活按我猜想應該是DBA的活,沒有往這方面發展的想法,所以筆記做得簡單點了… 概念: 備份 備份就是把資料庫複製到轉儲裝置的過程 恢復 恢復就是把資料庫由存在故障的狀態轉變為無故障狀態的過程 --

【PMP】Head First PMP 學習筆記章 風險管理

第十一章 風險管理 計劃再仔細的專案也會遇到麻煩。 什麼是風險 風險是任何可能影響專案的不確定時間或狀況,但並非所有風險都是負面的 風險(risk) 事件(event) 狀況(condition) 機會(opporunity) 風險偏好。為了預期的回