1. 程式人生 > >java 設計模式-單例模式-懶載入

java 設計模式-單例模式-懶載入

首先推薦種最好的單例模式實現方式(沒有之一)

public class Manager {

    private Manager() {
        
    }
    
    public static Manager getInstance() {
        return ManagerHolder.instance;
    }
    
    private static class ManagerHolder {
        private static final Manager instance = new Manager();
    }
}

然後解釋下為什麼要用這種方式:

* 內部類只在需要的時候才會被類載入器載入,實現了懶載入,即在需要的時候才例項化出一個Manager,而且是唯一的一個

* 同時由於instance是static final型別,保證了記憶體中只有這樣一個例項存在,而且只能被賦值一次,從而保證了執行緒安全性

(即使在高併發的情況下多個執行緒同時訪問getInstance()方法 也能夠保證例項的唯一性)

其他沒有采用內部類的實現方式 以下是目前見過最好的:

public static class SingletonOptimizeLazy {
    static SingletonOptimizeLazy instance = null;
    public static SingletonOptimizeLazy getInstance() {
      if (instance == null) {
        createInstance();
      }
      return instance;
    }
    private synchronized static SingletonOptimizeLazy createInstance() {
      if (instance == null) {
        instance = new SingletonOptimizeLazy();
      }
      return instance;
    }
}

以上這種解決方式 主要思想是將例項化的過程抽象出來 放在一個sychronized方法中執行 這樣也能夠實現懶載入與併發安全

不過仍然推薦使用內部類的解決方案

相關推薦

Java設計模式(三種寫法)

最近在一些部落格上面看到的單例模式,無一例外都是餓漢和懶漢,這兩個確實是單例模式,但是各有自己的弊端 先上程式碼吧 //餓漢式 class ClassA{ private static final ClassA instance = new ClassA(); pub

java 設計模式-模式-載入

首先推薦種最好的單例模式實現方式(沒有之一) public class Manager { private Manager() { } public static Manager getInstance() {

Java設計模式 - 模式

選擇 工廠方法 ech http locking 理解 多個 reg getname 本文繼續介紹23種設計模式系列之單例模式。 概念:  Java中單例模式是一種常見的設計模式,單例模式的寫法有好幾種,這裏主要介紹三種:懶漢式單例、餓漢式單例、登記式單例。  單例模式有

Java設計模式-模式

影響 沒有 環境 成員 == 比較 .net 非線程安全 align 轉自:http://blog.csdn.net/jason0539/article/details/23297037   Java中單例模式是一種常見的設計模式,單例模式的寫法有多種,這裏主要只介紹:懶漢

Java 設計模式 ------ 模式

stat out instance bsp 問題 構造函數 程序開發 div .cn   在程序開發中,有時我們只需要一個對象就可以了,如日誌對象,工具類,怎麽樣保證整個應用程序中有且只有一個對象呢?這就要用到單例模式了,通過名字就可以看出來,它就是保證整個應用程序中只有一

Java設計模式--模式

提高 安全問題 color 自動 如果 排序 get 重排序 col 直想寫點關於設計模式的東西,卻懶到現在都沒寫過什麽,今天上午看到項目中的代碼,就在這個中午抽出時間寫點東西,拋個項目截圖先: 單例模式: 單例模式,是一種常用的軟件設計模式。在它的核心結構

java設計模式----模式

pri 獲取對象 tor 能夠 指向 style aps view 5.1 1.單例模式   1.1.引言:據我了解,單例模式應該屬於java設計模式中較為簡單的一個設計模式,作為設計模式的開篇,先從簡單入手,來慢慢理解設計模式。   1.2.定義:單例模式,是一種常用的軟

JAVA 設計模式模式

成員變量 說明 不用 spa java程序 成員 AS AI 唯一性 JAVA中的單例模式是一種廣泛使用的設計模式,是Java裏23種設計模式之一。單例模式的作用是保證在JAVA程序中,某個類只有一個程序存在。 這裏簡單介紹其兩種基本寫法:餓漢式和懶漢式。 餓漢式與懶漢式區

JAVA設計模式-模式(Singleton)線程安全與效率

保存 ring 使用方法 部分 rac cheng 原因 cts 要求 一,前言   單例模式詳細大家都已經非常熟悉了,在文章單例模式的八種寫法比較中,對單例模式的概念以及使用場景都做了很不錯的說明。請在閱讀本文之前,閱讀一下這篇文章,因為本文就是按照這篇文章中的八種單例模

java常用設計模式--模式簡單例子

package com.ruanyun;/** * @Auther: maxw * @Date: 2018/11/10 17:29 * @Description: */public class Test4 { public static void main(String args[]){

java設計模式(模式)的效能及思想

                 單例模式:    單例模式是設計模式中使用最普遍的模式之一,是一種物件建立模式,用於生產一個物件的具體例項,塔可以確保系統中一個類只產生一個例項.那麼在j

Java設計模式 —— 模式

單例模式的定義: 一個類只能建立一個例項,每個例項有一個全域性唯一的訪問點 我們為什麼需要單例模式:   有一些物件我們只需要一個,如執行緒池(threadpool)、快取(cache)、日誌物件、充當驅動程式的物件等。如果創建出多個例項,就會導致很多問題的產生,例如:

Java設計模式-模式、觀察者模式、工廠模式

單例設計模式 概念: 全域性只有一個例項,自行例項化物件,自行向整個系統提供這個例項。 應用場景: 需要全域性只有一個例項的時候,如儲存使用者資訊。 只有一個訪問途徑 優點: 全域性只有一個例項,避免了頻繁的建立例項,耗費的資源。 提

java設計模式——模式(三)

容器單例模式 之前學習Structs2,Spring框架時,經常會聽到單例,多例。雖然這與單例模式不太一樣,但是都很類似。在程式執行的時候,就載入所有的例項,然後用的時候直接取出 看下面程式碼: /** * @program: designModel * @description: 容器單例模

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

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

設計模式Java隨筆)—模式

單例模式(Singleton Pattern):5種建立型模式中的一種,有關單例模式的所有建立方法參考:Java單例模式——並非看起來那麼簡單(總結不易,感謝!),本文中,我只對開發中常用的兩種(多執行緒)方法和Java特有的列舉法進行程式碼複寫。 首先,還是貼一下單例的定

[Java] [設計模式] [ 模式 ]

定義 確保單例類只有一個例項,並且這個單例類提供一個函式介面讓其他類獲取到這個唯一的例項。 如果某個類,建立時需要消耗很多資源,即new出這個類的代價很大; 或者是這個類佔用很多記憶體,如果建立太多這個類例項會導致記憶體佔用太多。上述情況下就應該使用單例模式 單

JAVA 23種設計設計模式---模式

單例模式有兩種  第一種:餓漢式單例模式   第二種:懶漢式單例模式 概念:在它的核心構建中包含一個被稱為單例的特殊類 我們在使用單例模式時只要抓住以下三個特點就可以了!! 特點: 1.單例類只能有一個例項。構造方法限定為private從而避免類在外部被例項化。 2

Java設計模式-模式(二)模式

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

淺談Java設計模式——模式

一、概述         單例模式主要是為了避免因為建立了多個例項造成資源的浪費,且多個例項由於多次呼叫容易導致結果出現錯誤,而使用單例模式能夠保證整個應用中有且只有一個例項。 二、定義 定義:只