单例模式demo
package com.test;
/**
*
* @author Administrator
*我的发现:调用这个的时候,不能直接实例化了;需要=null;然后get; 这样安全些;
*然后仔细找了下单例模式的解释,发现是这样的;单例模式要线程安全,有单独且唯一的一个例子;
*所以重新了构造方法,改成了安全的private,然后加了一个例子,setget方法(set方法干掉了、),
*这里是饿汉式单例模式,在类初始化的时候就新实例化了一个唯一的实例了;
*
*注: 单例模式有以下特点:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例(略)。
*/
public class SingletonClass {
//饿汉式:
/*
private SingletonClass() {}
private static final SingletonClass instance = new SingletonClass();
public static SingletonClass getInstance() {
return instance;
}
*/
//懒汉式:
/*
private SingletonClass() {}
private static SingletonClass instance = null;
public static SingletonClass getInstance() {
instance = new SingletonClass();
return instance;
}
*/
//懒汉式在getInstance方法上+同步:
/*
private SingletonClass() {}
private static SingletonClass instance = null;
public static SingletonClass getInstance() {
if(instance==null){
instance = new SingletonClass();
}
return instance;
}
*/
//懒汉式+双重检查锁定
/*
private SingletonClass() {}
private static SingletonClass instance = null;
public static SingletonClass getInstance() {
if(instance==null)
synchronized (SingletonClass.class) {
if(instance==null){
instance = new SingletonClass();
}
}
return instance;
}
*/
//静态内部类
//(既实现了线程安全,又避免了同步带来的性能影响)
private static class LazyHolder {
private static final SingletonClass INSTANCE = new SingletonClass();
}
private SingletonClass() {
}
public static final SingletonClass getInstance() {
return LazyHolder.INSTANCE;
}
}
最新文章
- 自定义Dialog宽度占满屏幕
- 如何异步创建文件夹(node)
- Java正则表达式匹配例子
- android142 360 分页加载
- pl/sql developer连接远程数据库
- mysql服务器辅助选项
- js中的注意事项(持续整理)
- Palindromes&;nbsp;_easy&;nbsp;version
- CSDN Androidclient开展(两):基于如何详细解释Java使用Jsoup爬行动物HTML数据
- TOGAF架构开发方法(ADM)之需求管理阶段
- 转:jquery 父、子页面之间页面元素的获取,方法的调用
- reference file contains errors
- BZOJ 1968: [Ahoi2005]COMMON 约数研究(新生必做的水题)
- java接口变量问题
- Wireshark显示结果过滤基本语法
- Eclipse搭建SpringBoot之HelloWorld
- POI2014解题报告
- Puppet的搭建和应用
- Oracle系列(三): 情景查询一 a表中有个fid字段,逗号分隔开来,b表中有id字段及其他信息,如何关联a表的fid和和b表的id字段查询
- 轻量架构ShuffleNet V2:从理论复杂度到实用设计准则
热门文章
- Linux下执行Oracle的sql脚本
- msf下的各种生成payload命令
- TCP 基础知识
- BZOJ5487: [Usaco2018 Dec]Cowpatibility
- HDU 6088 Rikka with Rock-paper-scissors(NTT+欧拉函数)
- Linux服务器超简单安装Python3环境、Ipython、Jupyter、virtualenv、virtualenvwrapper教程全在这了
- NYOJ_1274_信道安全 -
- shiro框架
- Kafka学习之二 Kafka安装和使用
- 《SQL 基础教程》第四章:数据更新