服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服务器之家 - 编程语言 - JAVA教程 - java单例模式4种使用方式分享

java单例模式4种使用方式分享

2019-11-07 12:43java教程网 JAVA教程

到底如何写一个在生产环境中使用的单实例模式?下面是4种方式,大家参考使用吧

1、Java Concurrency In Practice的List

复制代码代码如下:

public class Singleton {  
    private static class SingletonHolder {  
        public static Singleton resource = new Singleton();  
    }  
    public static Singleton getResource() {  
        return  SingletonHolder.resource ;  
    }  

    private Singleton(){  

    }  
}

 

2、effective Java 

复制代码代码如下:

public class Singleton {  
    public static final Singleton INSTANCE = new Singleton();  

    private Singleton(){}  

    public void method(){  
        //...  
    }  
    public static void main(String[] a){  
        //调用方法。  
        Singleton.INSTANCE.method();  
    }  
}

 

3、利用枚举巧妙创建单实例

复制代码代码如下:

/** 
 * 利用枚举巧妙创建单实例 
 */  
public enum Singleton {  
    INSTANCE;  
    public void method(){  
        //...  
    }  
    public static void main(String[] a){  
        //调用方法。  
        Singleton.INSTANCE.method();  
    }  

 

4、双重锁

复制代码代码如下:

public class Singleton {  
    private static volatile Singleton instance = null;  
    /** 
     * 防止其他人new对象 
     */  
    private Singleton(){  
        System.out.println("init");  
    }  
    public static  Singleton getInstance(){  
        if(instance == null){  
            synchronized(Singleton.class){  
                if(instance == null){  
                    instance = new Singleton();  
                }  
            }  
        }  
        return instance;  
    }  

延伸 · 阅读

精彩推荐
  • JAVA教程Scala入门之List使用详解

    Scala入门之List使用详解

    这篇文章主要介绍了Scala入门之List使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小...

    小破孩2932019-07-08
  • JAVA教程Scala常用List列表操作方法示例

    Scala常用List列表操作方法示例

    这篇文章主要介绍了Scala常用List列表操作方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下...

    刺客五六柒6022019-07-07
  • JAVA教程Java程序员必须熟记流程图

    Java程序员必须熟记流程图

    线程池:一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的...

    今日头条3272019-09-05
  • JAVA教程深度剖析java动态静态代理原理源码

    深度剖析java动态静态代理原理源码

    这篇文章主要介绍了深度剖析java动态静态代理原理源码,关于Java中的动态代理,我们首先需要了解的是一种常用的设计模式--代理模式,而对于代理,根据...

    chen_hao4772019-07-04
  • JAVA教程des加密解密JAVA与.NET互通实例

    des加密解密JAVA与.NET互通实例

    这篇文章主要介绍了des加密解密JAVA与.NET互通实例,大家参考使用吧 ...

    java技术网2612019-10-25
  • JAVA教程java字符串切割实例学习(获取文件名)

    java字符串切割实例学习(获取文件名)

    在Java中处理一些路径相关的问题的时候,如要取出ie浏览器上传文件的文件名,由于ie会把整个文件路径都作为文件名上传,需要用java.lang.String中的replac...

    java教程网4892019-10-24
  • JAVA教程解析JPA的视图查询问题

    解析JPA的视图查询问题

    这篇文章主要是对JPA的视图查询问题进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助 ...

    java技术网3512019-10-23
  • JAVA教程深入解析java中的静态代理与动态代理

    深入解析java中的静态代理与动态代理

    本篇文章是对java中的静态代理与动态代理进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助 ...

    java教程网4452019-10-16