关闭

单态模式(SingletonPattern)

标签: java
139人阅读 评论(0) 收藏 举报
分类:

单态模式:

确保一个类只有一个实例,并提供一个全局访问点


毫无疑问,单态模式是java编程过程中最常见也是最常用的模式;其核心就是一个类整个生命周期中就只有一个实例,无论是单线程还是多线程都是只有一个;
SingletonPattern


在实现方式上有两种:饥汉和饱汉(其实就是初始化的先后顺序):
饥汉式:

public class SingletonOther {
    private static SingletonOther instance;

    private SingletonOther() {
    }

    public SingletonOther getInstance(){
        if(instance == null){
            instance = new SingletonOther();
        }
        return instance;
    }
}

饱汉式:

public class Singleton {
    private static Singleton instance = new Singleton();

    private Singleton() {
    }

    public Singleton getInstance()
    {
        return instance;
    }

}

然而,在多线程情况下饥汉实例化过程中,由于CPU时钟轮训工作时那就有可能出现多个实例;在这个时候我们可以通过加锁进保证整个创建得过程的唯一性:

public class SingletonPro {
    private volatile static SingletonPro instance;

    private SingletonPro(){
    }

    public SingletonPro getInstance()
    {
        if(instance == null){
            synchronized (Singleton.class) {
                if(instance == null){
                    instance = new SingletonPro();
                }
            }
        }
        return instance;
    }
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:8096次
    • 积分:369
    • 等级:
    • 排名:千里之外
    • 原创:27篇
    • 转载:12篇
    • 译文:0篇
    • 评论:0条
    写给自己
    1.扎实Java基础,熟练应用IO、NIO、collection、net、Concurrent、jdbc等,熟悉JDK源码,对JVM有所了解与调优方案; 2.熟悉应用设计模式、概念和技巧,能准确理解领域驱动思想和方法,并熟练编码应用; 3.熟悉基础数据结构与算法实现,能够熟练编码与应用; 4.熟悉Struct、Spring、Spring MVC、MyBatis、Hibernate等框架体系,并有实际开发经验和深入了解框架源码与设计理念,有独到见解; 5.熟悉web开发及前端技术(包含html、css、Javascript、Ajax、json、Jquery、Node.js等开源框架) 6.熟悉memcached、Redis等缓存的特性; 7.熟悉接口技术,如webService、thrift和hessian等; 8.熟悉MongoDB、rabbitMQ、activeMQ、zookeeper、curator分布式解决方案; 9.熟悉Linux常用命令,能独立在上面进行开发、测试和部署; 10.熟练掌握shell、Python脚本语言; 11.熟悉tomcat、Jboss的配置和管理,有ngnix+tomcat的搭建和优化能力; 12.熟悉NOsql、MQ、Cache、TCP/IP原理,熟悉HTTP、TCP等协议; 13.熟悉orcalce、mysql数据库,能熟练运用sql语言,sql优化;