1. 程式人生 > >java單例模式 原子類 執行緒安全

java單例模式 原子類 執行緒安全

public class Singleton {


private static AtomicReference<Singleton> singleton = new AtomicReference<>();

private Singleton() {
}

public static Singleton getInstance() {
for (; ;) {
Singleton result = singleton.get();
if (result != null ) {
return result;
}
result = new Singleton();
if (singleton.compareAndSet(null, result)) {
return result;
}
}
}

public static void main(String[] args) {
System.out.println(Singleton.getInstance());
System.out.println(Singleton.getInstance());
System.out.println(Singleton.getInstance());
System.out.println(Singleton.getInstance());
System.out.println(Singleton.getInstance());
System.out.println(Singleton.getInstance());
}

}

執行結果:

[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

相關推薦

java模式 原子 執行安全

public class Singleton {private static AtomicReference<Singleton> singleton = new AtomicReference<>();private Singleton() {}p

Java 模式Java 模式在多執行環境中可能存在的問題

在多執行緒環境下,使用延遲載入的方式實現單例模式,會出現錯誤。 例如,使用如下方式實現單例類: package study20170307; /** * Created by apple on 17/3/7. */ public class Sin

spring模式中,執行安全問題

@RequestMapping(value = "getPsdbData", method = RequestMethod.POST) public Map<String, Object> getPsdbData(String key,HttpServletRequest reques

你的模式真的是執行安全的嗎?

在我們平時的專案中,單例模式是十分常見的設計模式,當然我們使用最多的是"懶漢式": public class SingleTon { private static SingleTon instance = null; private SingleTon(

模式——C++實現執行安全

一、懶漢模式:即第一次呼叫該類例項的時候才產生一個新的該類例項,並在以後僅返回此例項。 需要用鎖,來保證其執行緒安全性:原因:多個執行緒可能進入判斷是否已經存在例項的if語句,從而non thread safety. 使用double-check來保證thread s

Java執行學習筆記21之模式與多執行

詳細程式碼見:github程式碼地址   第六章 單例模式與多執行緒 前言: 我之前已經開設了23個設計模式這個專欄,介紹了很多的Java設計模式,其中一些模式對於絕 大多數程式語言設計思想都是類似的,需要了解單例模式的可以去看看。 我們在實際開發中經常用到單例模式,但

Java執行核心技術(五)模式與多執行

本文只需要考慮一件事:如何使單例模式遇到多執行緒是安全的、正確的 1.立即載入 / "餓漢模式" 什麼是立即載入?立即載入就是使用類的時候已經將物件建立完畢,常見的實現辦法就是直接 new 例項化。 public class MyObject { private static MyObject m

Java模式及建立模式的多執行問題 volatile synchronized 關鍵字

接下來,說說我對多執行緒中volitile 和 synchronized的理解 這兩個關鍵字都是java內建的用於實現執行緒同步的機制,其中: volitile用於修飾變數,用於同步主記憶體和執行緒儲存中的變數值,但是volitile使用應牢記 —— 只有在狀態真正獨立

Java執行-----模式在多執行中的使用用問題

   1.餓漢模式(立即載入模式)與多執行緒 不管需不需要用到例項都要去建立例項,即在類產生的時候就建立好例項 package com.thread; /** * 餓漢模式 * * @author yyx 2018年12月28日 */ public cl

Java執行模式與多執行

單例模式大家都不陌生,即讓一個類只有一個例項。 單例模式分為懶漢式和餓漢式。 懶漢式☞方法呼叫時再例項化物件,什麼時候用什麼時候例項化,比較懶。 餓漢式☞方法呼叫前物件就已經建立好了,比較有捉急。 本文著重描述懶漢式與多執行緒的內容。 1.餓漢式 public

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

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

c++模式,多執行使用

c++ 11保證了這樣做是執行緒安全的。 一:class Singleton{ static Singleton* GetInstance(){         static Singleton s;     

模式與多執行之間的關係總結

給大家推薦個靠譜的公眾號程式設計師探索之路,大家一起加油 單例模式與多執行緒之間的關係總結(魔怔多執行緒中~~~~~)   近日筆者被多執行緒與單例物件之間的關係產生了混淆。通過了一段時間的查閱,理清了兩者之間的管理,現做筆記梳理。如有不足,歡迎指出:) 在我在考慮考慮他們的時候思考了以

再說說模式和多執行(靜態內部類實現)

靜態內部類: package thread.singleton; public class StaticInnerClassSingleton { private static class Singleton{ private static Singleton si

模式在多執行中的安全性研究

概述 關於一般單例模式的建立和分析在我的另一篇部落格《Java設計模式——單件模式》中有詳細說明。只是在上篇部落格中的單例是針對於單執行緒的操作,而對於多執行緒卻並不適用,本文就從單例模式與多執行緒安全的角度出發,講解單例模式在多執行緒中應該如何被使用。

餓漢式模式在多執行中併發訪問的解決方案

/**  * 懶漢式 如果在多執行緒重會出現執行緒安全問題   * */ class Sing {private static Sing sin = null;private Sing() {}// 通過同步鎖直接就可以解決執行緒安全問題 這裡屬於的是靜態的所以這裡的//

執行學習筆記(三)之模式中的執行問題

在某些情況下,每個類只需要一個例項,單例模式就是保證在整個應用程式的生命週期中,任何一個時刻,單例類的例項都只存在一個(當然也可以不存在),核心點: 將採用單例模式的類的構造方法私有化(private修飾) 在其內部產生該類的例項化物件,並將其封裝成priv

模式遇到多執行併發的時候

/*  * GZYY    2016-12-5  上午9:17:44  * author: zsz  */ public class Singleton {     private static Singleton singleton;     public static Singleton getInsta

模式在多執行下的執行安全問題

/** * 雙重枷鎖 * java5以上版本才適用 * **/ class DoubleLockSingleton{ private volatile static DoubleLockSingleton doubleLockSingleton; private DoubleLockSi

【多執行核心技術】---模式與多執行

立即載入/“餓漢模式”    立即載入就是在使用類的時候已經將物件建立完畢,常見的實現辦法就是直接new例項化。立即載入/“餓漢模式”    延遲載入就是在呼叫get()方法時例項化才被建立,常見的實現方式就是在get()方法中進行new()例項化,    在多執行緒環境下會