iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java单例模式的常见写法有哪些
  • 230
分享到

Java单例模式的常见写法有哪些

2023-06-30 17:06:28 230人浏览 安东尼
摘要

这篇文章主要介绍“Java单例模式的常见写法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java单例模式的常见写法有哪些”文章能帮助大家解决问题。1.饿汉模式饿汉模式也叫预加载模式,它是在类

这篇文章主要介绍“Java单例模式的常见写法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java单例模式的常见写法有哪些”文章能帮助大家解决问题。

1.饿汉模式

饿汉模式也叫预加载模式,它是在类加载时直接创建并初始化单例对象,所以它并不存在线程安全的问题。它是依靠 ClassLoader 类机制,在程序启动时只加载一次,因此不存在线程安全问题,它的实现代码如下:

public class Singleton {    // 1.防止外部直接 new 对象破坏单例模式    private Singleton() {}    // 2.通过私有变量保存单例对象    private static Singleton instance = new Singleton();    // 3.提供公共获取单例对象的方法    public static Singleton getInstance() {        return instance;    }}

优点:实现简单、不存在线程安全问题。 缺点:类加载时就创建了对象,创建之后如果没被使用,就造成了资源浪费的情况。

2.懒汉模式

懒汉模式和饿汉模式正好是相反的,所谓的懒汉模式也就是懒加载(延迟加载),指的是它只有在第一次被使用时,才会被初始化,

它的实现代码如下:

public class Singleton {    // 1.防止外部直接 new 对象破坏单例模式    private Singleton() {}    // 2.通过私有变量保存单例对象    private static volatile Singleton instance = null;    // 3.提供公共获取单例对象的方法    public static Singleton getInstance() {        if (instance == null) { // 第一次效验            synchronized (Singleton.class) {                if (instance == null) { // 第二次效验                    instance = new Singleton();                }            }        }        return instance;    }}

懒汉模式使用的是双重效验锁和 volatile 来保证线程安全的,从上述代码可以看出,无论是饿汉模式还是懒汉模式,它们的实现步骤都是一样的:

  • 创建一个私有的构造方法,防止其他调用的地方直接 new 对象,这样创建出来的对象就不是单例对象了。

  • 创建一个私有变量来保存单例对象。

  • 提供一个公共的方法返回单例对象。

懒汉模式相比于饿汉模式来说,不会造成资源的浪费,但写法要复杂一些。

3.静态内部类

静态内部类既能保证线程安全,又能保证懒加载,它只有在被调用时,才会通过 ClassLoader 机制来加载和初始化内部静态类,因此它是线程安全的,此模式的实现代码如下:

public class Singleton {    // 1.防止外部直接 new 对象破坏单例模式    private Singleton() {    }    // 2.静态内部类    private static class SingletonHolder {        private static final Singleton INSTANCE = new Singleton();    }    // 3.提供公共获取单例对象的方法    public static final Singleton getInstance() {        return SingletonHolder.INSTANCE;    }}

4.枚举

枚举也是在第一次被使用时,才会被 Java 虚拟机加载并初始化,所以它也是线程安全的,且是懒加载的,它的实现代码如下:

public enum  EnumSingleton {    INSTANCE;    public EnumSingleton getInstance(){        return INSTANCE;    }}

关于“Java单例模式的常见写法有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: Java单例模式的常见写法有哪些

本文链接: https://www.lsjlt.com/news/330322.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java单例模式的常见写法有哪些
    这篇文章主要介绍“Java单例模式的常见写法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java单例模式的常见写法有哪些”文章能帮助大家解决问题。1.饿汉模式饿汉模式也叫预加载模式,它是在类...
    99+
    2023-06-30
  • Java单例模式的几种常见写法
    目录1.饿汉模式2.懒汉模式3.静态内部类4.枚举总结1.饿汉模式 饿汉模式也叫预加载模式,它是在类加载时直接创建并初始化单例对象,所以它并不存在线程安全的问题。它是依靠 Class...
    99+
    2024-04-02
  • java中单例模式的写法有哪些
    小编给大家分享一下java中单例模式的写法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、单例模式属于创建者模式的一种, 单例模式的目的是使该类只有一个实...
    99+
    2023-06-15
  • Python中实现单例模式的常见方式有哪些
    Python 中实现单例模式的几种常见方式元类(Metaclass):class SingletonType(type): """ 单例元类。用于将普通类转换为单例类。 "&q...
    99+
    2023-05-14
    Python
  • java单例模式有哪些
    java中的单例模式有:1.懒汉式单例;2.饿汉式单例;3.登记式单例;java中的单例模式有以下几种懒汉式单例java中懒汉式单例是指单例类在第一次调用时进行实例化,不存在多线程同步问题,可以避免synchronized所造成的性能问题。...
    99+
    2024-04-02
  • Java常见设计模式有哪些
    这篇文章主要介绍Java常见设计模式有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、设计模式总述:1、什么是设计模式:设计模式是一套经过反复使用的代码设计经验,目的是为了重用代码、让代码更容易被他人理解、保证...
    99+
    2023-06-29
  • java中常见的几种单例模式
    这篇文章主要为大家展示了“java中常见的几种单例模式”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java中常见的几种单例模式”这篇文章吧。  单例模式:是一种常用的软件设计模式,在它的核心结...
    99+
    2023-06-19
  • java面试常见模式问题---单例模式
    目录1、简介2、单例模式——懒汉式3、单例模式——饿汉式总结1、简介 单例模式使⽤场景: 业务系统全局只需要⼀个对象实例,⽐如发号...
    99+
    2024-04-02
  • 有哪些常见的设计模式
    这篇文章主要讲解了“有哪些常见的设计模式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“有哪些常见的设计模式”吧!一、建造者模式建造者模式(Builder P...
    99+
    2024-04-02
  • Python常见的反模式有哪些
    本篇内容介绍了“Python常见的反模式有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.对Iterable对象使用map()和fil...
    99+
    2023-06-15
  • java单例模式有哪些优缺点
    Java单例模式的优点:1. 提供了对唯一实例的全局访问,方便了对该实例的控制和管理。2. 避免了重复创建对象,节省了系统资源。3....
    99+
    2023-10-11
    java
  • SQL Update的常见写法有哪些
    SQL Update语句是用来更新数据库表中的记录的,常见的写法有以下几种: 更新单个字段的值: UPDATE tab...
    99+
    2024-03-08
    SQL
  • ZooKeeper部署常见的模式有哪些
    单节点模式:ZooKeeper运行在单个节点上,适用于开发、测试或小规模部署。 多节点模式:ZooKeeper运行在多个节点...
    99+
    2024-04-02
  • Java中单例模式的七种写法示例
    目录前言1、饿汉式(线程安全)⭐2、懒汉式(线程不安全)⭐ 3、懒汉式(加锁)4、懒汉式(双重校验锁)⭐5、单例模式(静态内部类)6、单例模...
    99+
    2024-04-02
  • 单例模式的细节有哪些
    这篇文章主要介绍“单例模式的细节有哪些”,在日常操作中,相信很多人在单例模式的细节有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”单例模式的细节有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!从去...
    99+
    2023-06-15
  • Java单例模式怎么写
    本篇内容主要讲解“Java单例模式怎么写”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java单例模式怎么写”吧!这个模式是很有意思,而且比较简单,但是我还是要说因为它使用的是如此的广泛,如此的...
    99+
    2023-06-19
  • 常见的Java异常有哪些
    本篇文章为大家展示了常见的Java异常有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。异常是 Java 程序中经常遇到的问题,我想每一个 Java 程序员都讨厌异常,一 个异常就是一个 BUG,...
    99+
    2023-06-16
  • Python实现单例模式的方式有哪些
    这篇“Python实现单例模式的方式有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python实现单例模式的方式有哪些...
    99+
    2023-06-30
  • golang单例模式的实现方式有哪些
    在Go语言中,单例模式可以通过以下几种方式来实现: 懒汉式: 懒汉式是指在第一次使用时才创建实例。在Go语言中,可以使用sync....
    99+
    2024-02-29
    golang
  • Java中有哪些常见的语法糖
    Java中有哪些常见的语法糖,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。语法糖语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Pe...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作