java設計模式 -【單例模式】

單例模式的定義

單例模式(Singleton Pattern)是一種創建型設計模式,確保一個類只有一個實例,并提供一個全局訪問點。常用于需要控制資源或共享狀態的場景,例如數據庫連接、日志記錄器等

單例模式的實現方式

餓漢式(Eager Initialization)

在類加載時直接創建實例,線程安全但可能造成資源浪費

public class EagerSingleton {private static final EagerSingleton instance = new EagerSingleton();private EagerSingleton() {}public static EagerSingleton getInstance() {return instance;}
}

懶漢式(Lazy Initialization)

在第一次調用時創建實例,需加鎖保證線程安全

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

雙重檢查鎖(Double-Checked Locking)

減少同步開銷,僅在實例未初始化時加鎖

public class DoubleCheckedSingleton {private static volatile DoubleCheckedSingleton instance;private DoubleCheckedSingleton() {}public static DoubleCheckedSingleton getInstance() {if (instance == null) {synchronized (DoubleCheckedSingleton.class) {if (instance == null) {instance = new DoubleCheckedSingleton();}}}return instance;}
}

靜態內部類(Static Nested Class)

利用類加載機制保證線程安全,且延遲初始化

public class StaticNestedSingleton {private StaticNestedSingleton() {}private static class Holder {static final StaticNestedSingleton INSTANCE = new StaticNestedSingleton();}public static StaticNestedSingleton getInstance() {return Holder.INSTANCE;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/90367.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/90367.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/90367.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Flink 自定義類加載器和子優先類加載策略

子類優先加載Flink 默認采用了子優先(Child-First)的類加載策略來加載用戶代碼,以解決潛在的依賴沖突問題。我們可以通過源碼來證明這一點。ChildFirstClassLoader 的實現Flink 中負責實現“子優先”加載邏輯的核心類是 ChildFirstClassLoade…

Nginx 安全加固:如何阻止 IP 直接訪問,只允許域名訪問

在部署網站或 Web 應用時,我們通常會通過域名來訪問服務。然而,有時用戶可能會嘗試直接使用服務器的 IP 地址來訪問,這不僅可能繞過我們的域名特定配置(如 SSL 證書、重定向規則等),還可能導致不必要的安全風險或管理混亂。本文將介紹如何配置 Nginx,使其在通過 IP 地址…

服務端處于 TIME_WAIT 狀態的 TCP 連接,收到相同四元組的 SYN 后會發生什么?詳解

文章目錄一、先判斷 SYN 是否合法1、開啟「時間戳」機制1.1、合法 SYN1.2、非法 SYN2、關閉「時間戳」機制1.1、合法 SYN1.2、非法 SYN二、收到合法 SYN三、收到非法 SYN一、先判斷 SYN 是否合法 1、開啟「時間戳」機制 1.1、合法 SYN 客戶端的 SYN「序列號」比服務端「期望…

數字化轉型:一文讀懂從單系統到智能架構(業務、應用、數據、技術架構)的跨越

在數字化浪潮席卷全球的今天,企業正經歷從 “單系統孤島” 到 “智能架構協同” 的范式革命。智能架構以業務敏捷化、應用服務化、數據價值化、技術云原生化為核心特征,通過四個維度的架構升級,破解傳統 IT 系統的效率瓶頸,支撐企…

AUTOSAR進階圖解==>AUTOSAR_SRS_Transformer

AUTOSAR Transformer 詳解 基于AUTOSAR 4.4.0標準的Transformer模塊分析與說明目錄 1. Transformer概述 1.1 Transformer的作用1.2 Transformer的基本特性 2. Transformer架構 2.1 整體架構2.2 類層次結構 3. Transformer類型 3.1 SOME/IP Transformer3.2 COM Based Transform…

【算法專題訓練】05、最大單詞長度乘積

1、題目信息 https://leetcode.cn/problems/aseY1I/description/ 給定一個字符串數組 words,請計算當兩個字符串 words[i] 和 words[j] 不包含相同字符時,它們長度的乘積的最大值。假設字符串中只包含英語的小寫字母。如果沒有不包含相同字符的一對字符串…

Tenable 利用 AI 升級漏洞評級系統,提升風險優先級排序能力

網絡安全公司 Tenable Holdings Inc. 今日宣布對其漏洞優先級評級系統(Vulnerability Priority Rating,VPR)進行人工智能驅動的升級,旨在幫助機構更準確地識別和應對最具威脅性的漏洞。從60%到1.6%的精準聚焦Tenable VPR 系統于20…

安全插座項目規劃書

安全插座項目規劃書 一、項目概述 本項目旨在設計并開發一款安全插座,通過集成多種安全保護功能,有效預防因電氣故障引發的安全問題,如過載、短路、漏電等,為用戶提供更加可靠的用電環境。 二、技術架構 (一&#xff0…

Logcat日志分析

1. AndroidRuntime關鍵字(跟整個系統代碼相關) 一、AndroidRuntime的核心作用 AndroidRuntime是Android系統負責啟動和運行應用程序的核心組件,當應用因未處理的異常(如空指針、數組越界等)導致崩潰時,Andr…

Apache Ranger 權限管理

編譯 mvn install package -DskipTests -Dfast -Drat.skiptrue -Dmaven.test.skiptrue -Dcheckstyle.skiptrue -Denforcer.skiptrueinstall.properties PYTHON_COMMAND_INVOKERpython#DB_FLAVORMYSQL|ORACLE|POSTGRES|MSSQL|SQLA DB_FLAVORMYSQL ## # Location of DB client l…

tailscale+GitLab

1. 查看當前 LFS 的遠程地址 bash 復制 git lfs env | grep Endpoint 你會看到類似: Endpointhttp://192.168.3.36/makeup/classicparking.git/info/lfs (authbasic) 2. 修改 LFS 的遠程地址 使用以下命令將 LFS 的地址改為 http://100.125.163.56&#xff1…

微信通話自動錄音器

—————【下 載 地 址】——————— 【?本章下載一】:https://pan.xunlei.com/s/VOVvLpQuRxYadClkxTGwO2OnA1?pwdvind# 【?本章下載二】:https://pan.xunlei.com/s/VOVvLpQuRxYadClkxTGwO2OnA1?pwdvind# 【百款黑科技】:https://uc…

05.原型模式:從影分身術到細胞分裂的編程藝術

目錄序幕:當復制對象成為戰略需求一、原型工廠的核心裝備庫1.1 Java原生的淺克隆術二、深度克隆的煉金法則2.1 手工克隆大法(硬核派)2.2 序列化克隆術(魔法派)三、原型模式的工業級裝配3.1 原型注冊管理局3.2 Spring框…

[NLP]如何在 Synopsys VCS 仿真腳本中處理多個 UPF 文件的加載

如何在 Synopsys VCS 仿真腳本中處理多個 UPF 文件的加載 摘要:我將詳細解釋在 Synopsys VCS(VCS)模擬腳本中如何處理多個 UPF 文件的加載,包括原理、命令選項、示例腳本以及注意事項。這基于 VCS 的 native low power verification 支持(IEEE 1801 UPF 標準)。如…

DNF: Decouple and Feedback Network for Seeing in the Dark

DNF:用于暗光視覺的解耦與反饋網絡 摘要 RAW 數據的獨特屬性在低光照圖像增強方面展現出巨大潛力。然而,現有架構在單階段和多階段方法中的固有局限性限制了其性能。跨兩個不同域(噪聲到干凈和 RAW 到 sRGB)的混合映射&#xff0c…

論文精讀《Frequency domain watermarking: An overview》

1. 數字水印技術基礎概念與發展背景 數字水印技術作為信息隱藏領域的核心分支,其發展歷程可以追溯到20世紀90年代中期計算機網絡和信息技術的快速發展時期。隨著大量版權作品以數字文件形式存在,電子出版逐漸普及,傳統的版權保護方法面臨前所未有的挑戰。數字水印技術應運而…

北斗短報文兜底、5G-A增強:AORO P1100三防平板構建應急通信網絡

公網中斷的災區現場,泥石流阻斷了最后一條光纜。一支救援隊卻在廢墟間有序穿行,隊長手中的三防平板正閃爍著北斗衛星信號,定位坐標與傷亡信息化作一行行短報文,穿透通信孤島直達指揮中心。這是AORO P1100三防平板搭載的北斗短報文…

Java排序算法之<冒泡排序>

目錄 1、冒泡排序介紹 2、算法步驟 3、Java 實現(帶優化) 4、算法復雜度分析 5、優點與缺點 前言 排序算法的“進化路線”: 冒泡排序 → 選擇排序 → 插入排序 → 希爾排序 → 快速排序 → 歸并排序 → 堆排序↓Java 內置排序&#xff…

生活毫無頭緒就毫無頭緒吧(7.24)

最近好長一段時間沒有記錄了明顯感覺自己陷入了混亂中作息規律,專注力,心流,營養的飯菜如今下筆也沒有什么頭緒,前些日子本有感想但是又疲于記錄,忘了許許多多最近在寫論文,但嘗試了游泳——蛙泳感覺太神奇…

vulhub-master 靶場Apache(httpd)漏洞

apache_parsing_vulnerability 漏洞原理在Apache1.x/2.x中Apache 解析?件的規則是從右到左開始判斷解析,如果后綴名為不可識別?件解析,就再往左判斷。如 1.php.xxxxx,Apache會試圖識別你的代碼,從右往左一個一個試。漏洞攻略參加一個1.php.jpg文件&…