如何在Java中成功单例形式 (如何在java中添加注释)

如何在Java中成功单例形式 (如何在java中添加注释)

本文目录导航:

如何在Java中成功单例形式?

单例形式大抵有五种写法,区分为懒汉,恶汉,静态外部类,枚举和双重校验锁。

1、懒汉写法,罕用写法

对于JAVA中的singleton形式

package test;public class Singleton { private Singleton s; private Singleton() { } public static Singleton getSigleton() {if(s==null)s=new Singleton();return s; }}这就是一个单例形式,我想应该不用注释了,原理就是这个类的结构方法private了,一切在外边不能调用,也就不能new Singleton();获取实例,那么想获取实例就得调用它的静态方法getSigleton();即();就会前往一个Singleton的实例,留意此方法中的语句,即假设你是第一次性调用这个方法那么它会给你new一个实例,以后再调用获取的都是这个实例,也就是说从始至终就只要一个Singleton的实例,这就是单例形式。

如何在java中成功singleton形式

单例形式是设计形式中的一种,重要目标是确保一个类只要一个实例,并提供一个全局访问点。

在Java中,成功单例形式的方法有五种:懒汉式、饿汉式、静态外部类、枚举和双重审核锁定。

懒汉式是经常使用最宽泛的一种成功形式。

它经过在类外部定义一个静态私有变量,并在类的外部方法中启动实例的初始化。

现在次调用getInstance方法时,会创立实例并前往。

懒汉式的成功如下:class LazySingleton { private static LazySingleton singleton; private LazySingleton() {} public static LazySingleton getInstance() { if (singleton == null) { singleton = new LazySingleton(); } return singleton; }}饿汉式则是在类加载时即创立实例,这种形式保障了线程安保,然而或者形成资源糜费,由于类加载时实例就曾经被创立了。

饿汉式的成功如下:class HungrySingleton { private static HungrySingleton singleton = new HungrySingleton(); private HungrySingleton() {} public static HungrySingleton getInstance() { return singleton; }}静态外部类的成功则是在第一次性经常使用时才加载外部类,从而成功提前加载。

这种形式既能保障线程安保,又不会在类加载时就创立实例。

静态外部类的成功如下:class InternalSingleton { private static class SingletonHolder { private final static InternalSingleton INSTANCE = new InternalSingleton(); } private InternalSingleton() {} public static InternalSingleton getInstance() { return ; }}枚举成功则经过枚举类型来保障明例的惟一性,并且可以防止反序列化从新创立新的对象。

枚举成功如下:enum EnumSingleton { INSTANCE; public void doSomeThing() { // do something }}最后一种是双重审核锁定,只管在某些状况下可以提高功能,但在Java的以后内存模型中,这种形式是有效的。

双重审核锁定的成功如下:class LockSingleton { private volatile static LockSingleton singleton; private LockSingleton() {} public static LockSingleton getInstance() { if (singleton == null) { synchronized () { if (singleton == null) { singleton = new LockSingleton(); } } } return singleton; }}

你可能想看:
« 上一篇
下一篇 »

相关推荐

java中什么是冒泡,冒泡算法

2026年09月06日

27阅读

java中冒号,java双冒号

2026年09月06日

26阅读

java中的->,java中的是什么意思

2026年09月06日

24阅读

java中的super用法,Java中super的说明

2026年09月06日

28阅读

java中反射的应用,java中反射的应用场景

2026年09月06日

26阅读

java中开关的定义,Java关键字有哪些

2026年09月06日

26阅读