1. 程式人生 > >Java單例模式(懶漢式)優化

Java單例模式(懶漢式)優化

/**
 * Created by liuyazhou on 2017/4/25.
 */
public class Singleton {

    //單例模式,懶漢式,缺點:每次建立新物件都要被鎖一次,優化後如下:
/*    
    private static Singleton  instance = null;
    private Singleton(){
    }
    public static synchronized Singleton getInstance(){
        if(instance == null){
            instance = new Singleton();
        }
        return instance;
    }
    */

    //這樣只會在第一次建立物件時鎖住,後面就不會再被鎖住
    private static Singleton  instance = null;
    private Singleton(){
    }
    private static synchronized void synInit(){
        if(instance == null){
            instance = new Singleton();
        }
    }

    public static  Singleton getInstance(){
        if(instance == null){
            synInit();
        }
        return instance;
    }
}

相關推薦

Java模式懶漢式優化

/** * Created by liuyazhou on 2017/4/25. */ public class Singleton { //單例模式,懶漢式,缺點:每次建立新物件都要被

PHP面向對象模式懶漢式

檢查 私有 構造函數 知識 單例 懶漢 變量 eof php面向對象 知識點: 一、三私一公: ①、私有靜態屬性,又來儲存生成的唯一對象 ②、私有構造函數 ③、私有克隆函數,防止克隆——clone ④、公共靜態方法,用來訪問靜態屬性儲存的對象,如果沒有對象,則生成此單例 二

Java --- 模式 七種寫法

第一種(懶漢,執行緒不安全): public class Singleton { private static Singleton instance; private Singleton() { } public stati

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

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

java常用的幾種模式懶漢式、餓漢式、登記式

簡單的講,單例模式就是確保某個類只有一個例項,而且自行例項化並向整個系統提供這個例項。 何時用到?執行緒池、快取、日誌物件、對話方塊、顯示卡驅動程式、印表機中都用到,spring中用的最多:Spring Context Factory用的是單例,bean預設都是

[轉]設計模式--模式懶漢式和餓漢式

打印 是否 調用構造 餓漢 一段 tools 會有 輸出結果 java 單例模式是設計模式中比較簡單的一種。適合於一個類只有一個實例的情況,比如窗口管理器,打印緩沖池和文件系統, 它們都是原型的例子。典型的情況是,那些對象的類型被遍及一個軟件系統的不同對象訪問,因此需要一個

JAVA設計模式模式

單例對象 日誌 locking anti 常見 基本上 title 加載 懶漢式 本文繼續介紹23種設計模式系列之單例模式。 概念:  java中單例模式是一種常見的設計模式,單例模式的寫法有好幾種,這裏主要介紹三種:懶漢式單例、餓漢式單例、登記式單例。  單例模式有以下特

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

模式懶漢式 與 餓漢式

懶漢式: public class SingleTon{   private static SingleTon singleTon;   private SingleTon(){}   public static SingleTon getSingleTon(){     if(singleTon

設計模式模式懶漢式和餓漢式

設計模式: 一些人總結出來用來解決特定問題的固定的解決方案。 單例模式 解決一個類在記憶體中只存在一個物件,想要保證物件的唯一。 1 為了避免其他程式過多的建立該類物件。禁止其他程式建立該類物件。 2 為了其他程式可以訪問該類物件,在本類中自定義一個物件。 3 方便其他程

Java設計模式之Singleton——四種不同的模式Singleton

單例模式(Singleton [?sglt?n]) 如果要保證系統裡最多隻能存在一個例項時,我們就需要單例模式。例如快取池、資料庫連線池等。 例項一:最簡單的單例模式 因為JVM在載入類時,對於static屬性的初始化只能由一個執行緒執行且僅執行一次,並且return操

Java設計模式-模式模式

餓漢式單例類 餓漢式單例類在載入時單例物件已經被建立。程式碼如下: /** * 懶漢式單例 * @Author: Rick * @Date: 2018/10/31 17:44 */ public class EagerSingleton { pr

模式懶漢式、雙重鎖、餓漢式、登記式

單例模式確保某一個類只有一個例項 1.懶漢式是延時載入,在需要的時候才建立物件,避免記憶體浪費。但面臨著多執行緒訪問的安全性問題,需要做雙重鎖定才能保證安全。雙重鎖模式將同步內容下放到if內部,提高

模式懶漢式和餓漢式及如何實現執行緒安全

單例模式有兩種:懶漢式和餓漢式。 1 #include <iostream> 2 3 using namespace std; 4 5 6 // 保證在整個程式執行期間,最多隻能有一個物件例項 7 8 9 // 懶漢式 10 // 1 、建構函式私有化 11

簡單java模式擊多次,如何讓視窗只顯示一次

1.將實現功能的建構函式設為private 2.在寫一個public的構造方法: 如下: private static AddPerson addPerson = null;  public static  synchronized AddPerson GetInstance

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

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

模式懶漢式和餓漢式

單例模式是一個類有且僅有一個例項,並且自行例項化向整個系統提供,常用的有懶漢式和餓漢式。 一、懶漢式:在第一次呼叫的時候才例項化自己。 public class Singleton {

java模式執行緒安全

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

如何正確地寫出模式懶漢式和餓漢式寫法

本文轉自大神:伍翀 原文連結 單例模式算是設計模式中最容易理解,也是最容易手寫程式碼的模式了吧。但是其中的坑卻不少,所以也常作為面試題來考。本文主要對幾種單例寫法的整理,並分析其優缺點。很多都是一些老生常談的問題,但如果你不知道如何建立一個執行緒安全的單例,不知道什