亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java實(shí)現(xiàn)單例模式的五種方式總結(jié)

 更新時(shí)間:2025年01月06日 09:22:39   作者:今天不coding  
這篇文章主要介紹了如何實(shí)現(xiàn)一個(gè)單例模式,包括構(gòu)造器私有化、提供靜態(tài)私有變量和公共獲取實(shí)例接口,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

如何實(shí)現(xiàn)一個(gè)單例

1、構(gòu)造器需要私有化

2、提供一個(gè)私有的靜態(tài)變量

3、暴露一個(gè)公共的獲取單例對(duì)象的接口

需要考慮的兩個(gè)問題

1、是否支持懶加載

2、是否線程安全

1、餓漢式

public class EagerSingleton {
    private static final EagerSingleton INSTANCE = new EagerSingleton();

    private EagerSingleton(){}

    public EagerSingleton getInstance(){
        return INSTANCE;
    }

}

不支持懶加載

線程安全

2、懶漢式

public class LazySingleton {
    private static LazySingleton INSTANCE;

    private LazySingleton() {
    }

    public static LazySingleton getInstance() {
        if (INSTANCE == null) {
            INSTANCE = new LazySingleton();
        }
        return INSTANCE;
    }
}

支持懶加載

線程不安全

public class LazySingleton {
    private static LazySingleton INSTANCE;

    private LazySingleton() {
    }

    public static synchronized LazySingleton getInstance() {
        if (INSTANCE == null) {
            INSTANCE = new LazySingleton();
        }
        return INSTANCE;
    }
}

支持懶加載

線程安全

3、雙重檢查鎖

public class DoubleCheckSingleton {
    private static DoubleCheckSingleton INSTANCE;

    private DoubleCheckSingleton() {
    }

    public DoubleCheckSingleton getInstance() {
        if (INSTANCE == null) {
            synchronized (DoubleCheckSingleton.class) {
                if (INSTANCE == null) {
                    INSTANCE = new DoubleCheckSingleton();
                }
            }
        }
        return INSTANCE;
    }
}

支持懶加載

線程安全

4、靜態(tài)內(nèi)部類

public class InnerSingleton {
    private InnerSingleton() {
    }

    public static InnerSingleton getInstance() {
        return Singleton.INSTANCE;
    }

    private static class Singleton {
        private static final InnerSingleton INSTANCE = new InnerSingleton();
    }
}

支持懶加載

線程安全

5、枚舉

public enum EnumSingleton {
    INSTANCE;
}

總結(jié) 

到此這篇關(guān)于Java實(shí)現(xiàn)單例模式的五種方式的文章就介紹到這了,更多相關(guān)Java實(shí)現(xiàn)單例模式方式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java類實(shí)現(xiàn)日期的時(shí)間差的實(shí)例講解

    java類實(shí)現(xiàn)日期的時(shí)間差的實(shí)例講解

    在本篇文章里小編給大家整理的是一篇關(guān)于java類實(shí)現(xiàn)日期的時(shí)間差的實(shí)例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • 如何在spring boot項(xiàng)目中使用Spring Security的BCryptPasswordEncoder類進(jìn)行相同密碼不同密文的加密和驗(yàn)證

    如何在spring boot項(xiàng)目中使用Spring Security的BCryptPasswordE

    本文介紹如何在Spring Boot項(xiàng)目中通過修改pom.xml引入安全依賴,添加配置類以解除默認(rèn)的HTTP請(qǐng)求攔截,以及如何創(chuàng)建BCryptPasswordEncoder對(duì)象進(jìn)行密碼的加密和匹配,通過這些步驟,可以有效地增強(qiáng)應(yīng)用的安全性
    2023-08-08
  • mybatis?@InsertProvider報(bào)錯(cuò)問題及解決

    mybatis?@InsertProvider報(bào)錯(cuò)問題及解決

    這篇文章主要介紹了mybatis?@InsertProvider報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Java使用poi-tl設(shè)置word圖片環(huán)繞方式為浮于在文字上方

    Java使用poi-tl設(shè)置word圖片環(huán)繞方式為浮于在文字上方

    POI-TL 是一個(gè)基于 Apache POI 的 Java 庫,專注于在 Microsoft Word 文檔(.docx 格式)中進(jìn)行模板填充和動(dòng)態(tài)內(nèi)容生成,下面我們看看如何使用poi-tl設(shè)置word圖片環(huán)繞方式為浮于在文字上方吧
    2025-03-03
  • Java Set集合去重的原理及實(shí)現(xiàn)

    Java Set集合去重的原理及實(shí)現(xiàn)

    這篇文章主要介紹了Java Set集合去重的原理及實(shí)現(xiàn),幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下
    2020-09-09
  • Java中將UUID存儲(chǔ)為Base64字符串的方法實(shí)現(xiàn)

    Java中將UUID存儲(chǔ)為Base64字符串的方法實(shí)現(xiàn)

    使用Base64編碼來對(duì)UUID存儲(chǔ)在一些特定的場(chǎng)合被廣泛的使用,本文主要介紹了Java中將UUID存儲(chǔ)為Base64字符串的方法實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • SpringBoot整合log4j2日志的實(shí)現(xiàn)

    SpringBoot整合log4j2日志的實(shí)現(xiàn)

    在項(xiàng)目推進(jìn)中,如果說第一件事是搭Spring框架的話,那么第二件事情就是在Sring基礎(chǔ)上搭建日志框架,大家都知道日志對(duì)于一個(gè)項(xiàng)目的重要性,尤其是線上Web項(xiàng)目,因?yàn)槿罩究赡苁俏覀兞私鈶?yīng)用如何執(zhí)行的唯一方式。此篇文章是博主在實(shí)踐中用Springboot整合log4j2日志的總結(jié)
    2021-06-06
  • Java基于循環(huán)遞歸回溯實(shí)現(xiàn)八皇后問題算法示例

    Java基于循環(huán)遞歸回溯實(shí)現(xiàn)八皇后問題算法示例

    這篇文章主要介紹了Java基于循環(huán)遞歸回溯實(shí)現(xiàn)八皇后問題算法,結(jié)合具體實(shí)例形式分析了java的遍歷、遞歸、回溯等算法實(shí)現(xiàn)八皇后問題的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • Java中創(chuàng)建ZIP文件的方法

    Java中創(chuàng)建ZIP文件的方法

    本文通過一段簡(jiǎn)單代碼給大家介紹了java中創(chuàng)建zip文件的方法,代碼超簡(jiǎn)單,感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-06-06
  • Java搭建簡(jiǎn)單Netty開發(fā)環(huán)境入門教程

    Java搭建簡(jiǎn)單Netty開發(fā)環(huán)境入門教程

    這篇文章主要介紹了Java搭建簡(jiǎn)單Netty開發(fā)環(huán)境入門教程,有詳細(xì)的代碼展示和maven依賴,能夠幫助你快速上手Netty開發(fā)框架,需要的朋友可以參考下
    2021-06-06

最新評(píng)論