java写出一个单例模式,写出一个单例模式的类

  java写出一个单例模式,写出一个单例模式的类

  00-1010 1.饥饿模式2。懒惰模式3。静态内部类4。枚举摘要

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

  类singleton {//1。防止外部直接新对象破坏singleton模式private Singleton() {} //2。通过私有变量保存singleton对象私有静态singleton实例=new singleton();//3.提供公共静态singleton getinstance(){ return instance;} }优点:实现简单,不存在线程安全问题。缺点:对象是在类被加载时创建的。如果创建后不使用,会造成资源浪费。

  00-1010懒惰模式和饥饿模式正好相反。所谓懒人模式就是懒人加载(延迟加载),也就是说只有第一次使用的时候才会初始化。

  它的实现代码如下:

  类singleton {//1。防止外部直接新对象破坏singleton模式private Singleton() {} //2。通过私有变量保存singleton对象私有静态可变singleton instance=null//3.提供公共静态singleton getinstance()的方法{ if(instance==null){//第一次验证synchronized(Singleton . class){ if(instance==null){//第二次验证instance=new Singleton();} } }返回实例;} } }懒汉模式使用的是双重效验锁和 volatile 来保证线程安全的,从上面的代码可以看出,无论是饥饿模式还是懒惰模式,实现步骤都是一样的:

  创建一个私有构造方法,防止其他地方直接调用新对象,这样创建的对象就不是单例对象了。创建一个私有变量来保存singleton对象。提供一个公共方法来返回singleton对象。相对于饿了么模型,懒人模型不会浪费资源,但是编写更复杂。

  00-1010静态内部类既能保证线程安全,又能保证懒加载,它只在被调用时通过ClassLoader机制加载和初始化内部静态类,所以是线程安全的。该模式的实现代码如下:

  公共Singleton {//1。防止外部直接新对象破坏singleton模式private Singleton() {} //2。静态内部类私有静态类Singleton Holder { Private Static Final Singleton Instance=New Singleton();} //3.提供公共静态final singleton getinstance(){ returnsingletonholder . instance;}}

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

  公共枚举EnumSingleton { INSTANCEpublic EnumSingleton getInstance(){ return INSTANCE;}}

  00-1010 singleton模式适用于频繁访问的对象,或者需要大量资源和时间的对象的创建和销毁。使用单例模式可以避免频繁地创建和销毁对象。实现singleton模式的常见方式有四种:饥饿中文模式、懒惰中文模式、静态内部类和枚举。从编写的简单性、线程安全性、代码的易懂性等方面来看,博主推荐枚举或懒惰模式来实现singleton模式。

  关于编写Java singleton模式的几种方法的文章到此结束。有关Java singleton模式的更多信息,请搜索以前关于流行IT的文章或继续浏览下面的相关文章。我希望你将来能支持流行它!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: