博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式之--单例模式(singleton)
阅读量:4355 次
发布时间:2019-06-07

本文共 1511 字,大约阅读时间需要 5 分钟。

package dmode.singleton;import java.util.Random;/** * 类描述:  单例模式 * 单例定义:ensure a class has only one instence,and provide a global point of access to it * 确保一个类只有一个实例,并且提供一个全局访问点来访问这个实例  * 其他内容:static 关键字修饰的内容,存储在静态代码区域, * java 的存储内容包括:堆、栈(常量、对象引用)、静态存储区 * @version 1.0  CreateDate: 2015-2-12 * * @history: * @updateDate            @updatePerson        @declare *  */public class SinglClass {    private static String singlParam;        //懒汉式声明,在使用对象的时候再获取    //线程不安全:在getInstenc() 方法中,如果并发,可能获取获取多个实例    //解决方法:可以用 synchronized 修饰方法,也可以在方法体内用 synchronized{}代码块    private static SinglClass singlClazz;        //饿汉式声明,在类的初始化时就获取实例,final 的作用是让这个实例不在变化    //线程安全    private static final SinglClass singlClazz2 = new SinglClass("饿汉式");        private static int time = 1;        private SinglClass(String param){        System.out.println("开始构造对象" + new Random().nextInt(100) + param);    }        //懒汉式声明    //synchronized 保证线程安全    public static synchronized SinglClass getInstence(){        if(singlClazz == null){            singlParam = "懒汉式";            singlClazz = new SinglClass("懒汉式");        }        return singlClazz;    }        //饿汉式声明    public static SinglClass getInstence2(){        return singlClazz2;    }        public void sayHello(){        if(this == singlClazz){            System.out.println(singlParam + "say Hello " +  time++  );        }else{            System.out.println("饿汉式" + "say Hello " +  time++ );        }            }    }

 

转载于:https://www.cnblogs.com/leonkobe/p/4287770.html

你可能感兴趣的文章
静态链接与动态链接的区别
查看>>
如何使用mysql
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第11节 Logback日志框架介绍和SpringBoot整合实战_45、SpringBoot2.x日志讲解和Logback配置实战...
查看>>
类中的静态函数和非静态函数的区别
查看>>
windows 下安装Apache
查看>>
Fedora14 mount出现错误时解决办法【亲测有效】
查看>>
使用Visual Studio 2013进行UI自动化测试
查看>>
13-集体照
查看>>
读了曾国藩家书,,心态逐渐平和起来。搞技术的如果缺乏信念的指引,生活会很乏味无聊!...
查看>>
160809308周子济第六次作业
查看>>
sublime text3最新版本注册码(build 3143)
查看>>
linux使用技巧
查看>>
必背公式及常数
查看>>
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
查看>>
js时间戳转时间格式
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
Linux的用户态和内核态
查看>>
JavaScript原生错误及检测
查看>>
(原创) cocos2d-x 3.0+ lua 学习和工作(4) : 公共函数(3): 深度克隆clone()
查看>>
为什么写作
查看>>