单例设计模式-静态内部类
生活随笔
收集整理的這篇文章主要介紹了
单例设计模式-静态内部类
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
靜態(tài)內(nèi)部類
靜態(tài)內(nèi)部類應(yīng)用實例
代碼演示
package com.atguigu.principle.singleton.type07;/** * @author victor * @site https://victorfengming.github.io/ * @company XDL * @project java_mode * @package com.atguigu.principle.singleton.type07 * @created 2021-02-02 20:37 * @function "" */ public class SingletonTest07 {public static void main(String[] args) {System.out.println("使用靜態(tài)內(nèi)部類完成單例設(shè)計模式!");Singleton ins = Singleton.getInstance();Singleton ins2 = Singleton.getInstance();System.out.println(ins);System.out.println(ins.hashCode());System.out.println(ins2);System.out.println(ins2.hashCode());System.out.println(ins == ins2);Singleton ins4 = Singleton.getInstance();System.out.println(ins4);/** 使用靜態(tài)內(nèi)部類完成單例設(shè)計模式!com.atguigu.principle.singleton.type07.Singleton@1540e19d356573597com.atguigu.principle.singleton.type07.Singleton@1540e19d356573597truecom.atguigu.principle.singleton.type07.Singleton@1540e19d* */} }// 靜態(tài)內(nèi)部類完成,推薦使用 class Singleton {private static volatile Singleton instance;// 構(gòu)造器私有化private Singleton() {}// 寫一個靜態(tài)累不累,該類中有一個靜態(tài)的屬性,這個靜態(tài)屬性他有一個類型就是,Singletonprivate static class SingletonInstance {// 通過jvm底層裝載機制保證了,這個是線程安全的private static final Singleton INSTANCE = new Singleton();}// 提供一個靜態(tài)公有方法,直接返回SingletonInstance.INSTANCEpublic static Singleton getInstance() {return SingletonInstance.INSTANCE;} }優(yōu)缺點說明:
這種方式采用了類裝載的機制來保證初始化實例時只有一個線程
靜態(tài)內(nèi)部類方式在Singleton類被裝載時并不會立即實例化,而是在需要實例化時,調(diào)用getInstance方法,才會裝載SingletonInstance類,從而完成Singleton的實例化.
類的靜態(tài)屬性只會在第一次加載類的時候初始化,所以在這里,JVM幫助我們保證了線程的安全性,在類進行初始化時,別的線程時無法進入的
優(yōu)點: 避免了 線程不安全 ,利用靜態(tài)內(nèi)部類特點實現(xiàn)延遲加載,效率高
結(jié)論: 推薦使用
更多:http://victorfengming.gitee.io/design_pattern/
總結(jié)
以上是生活随笔為你收集整理的单例设计模式-静态内部类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PyQt5案例汇总(简洁版)
- 下一篇: 单例设计模式2