1. 程式人生 > >java單例模式(執行緒安全)

java單例模式(執行緒安全)

package cn.yang.test.controller;

/**單例模式
 * Created by Dev_yang on 2016/2/26.
 */
public class Singleton {
    //多執行緒環境需要加上volatile,保證記憶體可見性
    private volatile static Singleton singleton;
    private Singleton(){}
/*在方法上面加 synchronized會導致程式執行效率很低,
 public static synchronized Singleton  getInstance(){
        if(singleton==null){
            singleton = new Singleton();
        }
        return singleton;
    }*/
//更好的解決方案 public static Singleton getInstance(){ if(singleton==null){ //只有singleton==null才需要考慮多執行緒問題,所以只在這個地方加同步就可以了 synchronized(Singleton.class){ if(singleton==null){ singleton = new Singleton(); } } } return
singleton; } }

上面是懶漢式的例子,也可以改成下面這種餓漢式

public class Singleton {

    private  static Singleton singleton=new Singleton();
    private Singleton(){}

    public static  Singleton  getInstance(){
        return singleton;
    }

}

相關推薦

java模式執行安全

package cn.yang.test.controller; /**單例模式 * Created by Dev_yang on 2016/2/26. */ public class Singl

設計模式模式執行安全

可以說單例模式是所有設計模式中最簡單的一種。 單例模式就是說系統中對於某類的只能有一個物件,不可能出來第二個 單例模式也是23種設計模式中在面試時少數幾個會要求寫程式碼的模式之一。主要考察的是多執行緒下面單例模式的執行緒安全性問題。 1.多執行緒安全單例模式例項

java 模式執行安全的餓漢模式和懶漢模式

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

C++模式執行安全、記憶體釋放

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

JAVA設計模式-模式(Singleton)執行安全與效率

一,前言   單例模式詳細大家都已經非常熟悉了,在文章單例模式的八種寫法比較中,對單例模式的概念以及使用場景都做了很不錯的說明。請在閱讀本文之前,閱讀一下這篇文章,因為本文就是按照這篇文章中的八種單例模式進行探索的。   本文的目的是:結合文章中的八種單例模式的寫法,使用實際的示例,來演示執行緒安全和效率  

C++的模式執行安全模式懶漢/餓漢

單例模式 單例模式:是一種常用的軟體設計模式。在它的核心結構中只包含一個被稱為單例的特殊類。通過單例模式可以保證系統中一個類只有一個例項。即一個類只有一個物件例項。   實現簡單的單例模式:建構函式宣告為private或protect防止被外部函式

Java五種模式執行安全

單例模式是一種常用的軟體設計模式,常被用於一個類在系統中最多隻允許存在一個例項的場合,如視窗管理器、列印緩衝池、檔案系統等。在單例模式的核心結構中,只包含一個被稱為單例類的特殊類。通過單例模式可以保證系統中一個類只有一個例項而且該例項易於外界訪問,從而方便對例項個數的控制並節約系統資源。如果希望在系統中某個類

python中模式執行安全問題

看了好多文章都是java實現的,特此寫一篇python的。 這個問題的兩種解決方案: 1.最簡單粗暴的就是在系統中先生成一個單例,就不存線上程安全問題了 2.用雙重同步鎖去實現,一把鎖加外面,一把鎖加里面: class Singleton(object): __instance

模式執行安全

package com.day3; public class SingleTonDemo { public static void main(String[] args) { SinleTonThread sinleTonThread=new SinleTonThread();

設計模式模式執行安全問題

前言 單例模式分為“餓漢模式”與“懶漢模式”。今天我們來聊聊單例模式,特別是在多執行緒中我們需要特別注意。 餓漢模式 class Singleton{ private static Singleton singleton = new Singleton(); private Singl

模式執行安全解析

面試的時候,常常會被問到這樣一個問題:請您寫出一個單例模式(Singleton Pattern)吧。     單例的目的是為了保證執行時Singleton類只有唯一的一個例項,最常用的地方比如拿到資料庫的連線,Spring的中建立BeanFactory這些開銷比較大的操作,

object-c 模式執行安全

單例模式(Singleton Pattern):保證一個類只有一個例項,並且提供一個訪問它的全域性訪問點。 單例在程式設計中是最常見的設計模式之一,下面我們來實現一個單例: Singleton.h 檔案 #import <Foundation/F

Java日期計算類執行安全

package com.mcp.util; public enum DateStyle { YYYY_MM("yyyy-MM", false), YYYY_MM_DD("yyyy-MM-dd", false), DD("dd", false), YYYYMMD

JAVA模式用於表示 執行池、資料庫連線池、列印池等系統唯一性資源

什麼是單例類?1、單例類只能有一個例項。  2、單例類必須自己建立自己的唯一例項。  3、單例類必須給所有其他物件提供這一例項。 單例類的應用場景?   單例模式確保某個類只有一個例項,而且自行例項化並向整個系統提供這個例項。在計算機系統中,執行緒池、快取、日誌物件、對話方

C# 基礎十四C#模式:首先介紹 執行、多執行、加鎖 模式。然後介紹模式執行同步:多執行有序訪問共享記憶體。

一、簡介 本篇文章將介紹如何使用單例模式,也就是類的例項化,在整個專案的生命週期內,只例項化一次。在單例模式中,往往可以看到如SourceCode.cs:這樣的結構的。 SourceCode.cs: public class Singleton { private static

懶漢式模式為何執行安全

這裡是一個懶漢式的示例程式碼:public class Singleton { private static Singleton s; private Singleton() { } public static Singleton getInstance

解決多執行模式執行安全問題

DCL雙檢查鎖機制 public class MyConfig { private volatile static MyConfig myConfig = null;//volatile

Java設計模式模式七種寫法

不一定 java設計 font method 防止 turn 無法 lazy 三種 Java設計模式之單例模式(七種寫法) 第一種,懶漢式,lazy初始化,線程不安全,多線程中無法工作: public class Singleton { private stati

java模式雙重檢查加鎖的原因

csharp sta get 第一次 instance new 同步機制 原因 AR public class Singleton{ private static Singleton instance = null;//是否是final的不重要,因為最多只可能實

Java模式雙重檢查

今天又想起了單例模式,看了網上好多文章,加鎖和可見性。自己也寫了一遍單例模式。 public class SingleTon { private SingleTon(){ } private static volatile SingleTon singleTon=null