单例
2016-07-25 18:23
197 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dandan_deyoushang/article/details/52026171
private static Singleton01 instance;
/**使用的对象锁为Singleton01.class*/
public static synchronized Singleton01 getInstance() {
if(instance==null){
instance=new Singleton01();
}
return instance;
}
//public void show(){}
private Singleton02(){}
private static Singleton02 instance;
/**使用的对象锁为Singleton01.class*/
public static Singleton02 getInstance() {
if(instance==null){
synchronized (Singleton02.class) {
if(instance==null){
instance=new Singleton02();
}
}
}
return instance;
}
//public void show(){}
}
/**类加载时初始化此属性*/
private static Singleton03 instance=new Singleton03();
public static Singleton03 getInstance() {
return instance;
}
//public static void display(){}
//public void show(){}
}
第四种单例模型
class Singleton04{
private Singleton04(){}
/**采用此内部类延迟Singleton04对象的创建,何时需要何时创建,
* 是Singleton03此方案一种优化*/
private static class Inner{
static Singleton04 instance=
new Singleton04();
}
public static Singleton04 getInstance(){
return Inner.instance;
}
public static void display(){}
//public void show(){}
}
第五种单例模型
enum Singleton05{//特殊的类型,Singleton05.class
instance;//对象(类加载时创建)
public void show(){}
}
第一种单例模型
class Singleton01{
private Singleton01(){}private static Singleton01 instance;
/**使用的对象锁为Singleton01.class*/
public static synchronized Singleton01 getInstance() {
if(instance==null){
instance=new Singleton01();
}
return instance;
}
//public void show(){}
}
第二种单例模型
private Singleton02(){}
private static Singleton02 instance;
/**使用的对象锁为Singleton01.class*/
public static Singleton02 getInstance() {
if(instance==null){
synchronized (Singleton02.class) {
if(instance==null){
instance=new Singleton02();
}
}
}
return instance;
}
//public void show(){}
}
第三种单例模型
class Singleton03{//饿汉单例 (小对象,频繁用)
private Singleton03() {}/**类加载时初始化此属性*/
private static Singleton03 instance=new Singleton03();
public static Singleton03 getInstance() {
return instance;
}
//public static void display(){}
//public void show(){}
}
第四种单例模型
class Singleton04{
private Singleton04(){}
/**采用此内部类延迟Singleton04对象的创建,何时需要何时创建,
* 是Singleton03此方案一种优化*/
private static class Inner{
static Singleton04 instance=
new Singleton04();
}
public static Singleton04 getInstance(){
return Inner.instance;
}
public static void display(){}
//public void show(){}
}
第五种单例模型
enum Singleton05{//特殊的类型,Singleton05.class
instance;//对象(类加载时创建)
public void show(){}
}
相关文章推荐
- leetcode-python 第五周
- 浏览器打开应用指定的界面
- 统计学习方法十:隐马尔科夫模型二
- MYSQL攻击全攻略
- Reed-Solomon和Cauchy Reed-Solomon解码时间复杂度为什么不同
- CentOS tcpflow抓包
- 程炳皓:八年开心
- LeetCode 338. Counting Bits
- 统计学习方法十:隐马尔科夫模型
- Java:应用Observer接口实践Observer模式
- Exception in thread "main" java.lang.NoClassDefFoundError: weblogic/rmi/extensions/DisconnectListene
- Android进阶处理图片之压缩图片大小、Lru内存解决方案
- 前端组件收集整理列表
- 整数串问题
- 【那些遇到的坑】—hadoop完全分布式集群搭建执行jps报错:Error occurred during initialization of VM
- 常用的shell命令汇总
- tomcat 工作原理
- Hibernate的事务处理机制和flush方法的用法
- Python 遍历目录
- 监控工具netdata在CentOS上部署