博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
静态内部类实现 单例模式
阅读量:4599 次
发布时间:2019-06-09

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

package model;

public class MySingleTon {

//1:饿汉 一旦完成加载,就把单例初始化完成,getInstance时已存在
// private final static MySingleTon singleTon=new MySingleTon();
//
// private MySingleTon(){
// System.out.println("starting init single");
// }
// public static MySingleTon getInstance(){
// return singleTon;
// }
//
// MySingleTon sinle1=MySingleTon.getInstance();
// System.out.println("-------------");
// MySingleTon sinle2=MySingleTon.getInstance();
// System.out.println("-------------");
// MySingleTon sinle3=MySingleTon.getInstance();
//
// 输出
// starting init single
// -------------
// -------------
//2 线程安全的 懒汉式 调用getInstance时 初始化实例
// private static MySingleTon single=null;
//
// private MySingleTon(){
//
// }
// public static MySingleTon getInstance(){
// if(single==null){
// synchronized (single) {
// if(single==null){
// single=new MySingleTon();
// }
// }
// }
// return single;
// }
//3 静态内部类实现单例
// 至于1、2、3这三种实现又有些区别,
//
// 第一种:饿汉式在类创建的同时就实例化一个静态对象出来,不管之后会不会使用这个单例,都会占据一定的内存,但是相应的,在第一次调用时速度也会更快,因为其资源已经初始化完成,
//
// 第2种,在getInstance中做了两次null检查,确保了只有第一次调用单例的时候才会做同步,这样也是线程安全的,同时避免了每次都同步的性能损耗
//
// 第3种,利用了classloader的机制来保证初始化instance时只有一个线程,所以也是线程安全的,同时没有性能损耗,所以一般我倾向于使用这一种。
private static class staticClassLazy{
private static MySingleTon single=new MySingleTon();
}
private MySingleTon(){}
public static MySingleTon getInstance(){
return staticClassLazy.single;
}

}

转载于:https://www.cnblogs.com/runningwang/p/6155039.html

你可能感兴趣的文章
Python 标识符
查看>>
Python mysql 创建连接
查看>>
企业化的性能测试简述---如何设计性能测试方案
查看>>
centos7 安装中文编码
查看>>
POJ - 3683 Priest John's Busiest Day
查看>>
正则表达式start(),end(),group()方法
查看>>
vuejs 学习旅程一
查看>>
javascript Date
查看>>
linux常用命令2
查看>>
狼图腾
查看>>
13、对象与类
查看>>
Sublime Text3 个人使用心得
查看>>
jquery 编程的最佳实践
查看>>
MeetMe
查看>>
IP报文格式及各字段意义
查看>>
(转载)rabbitmq与springboot的安装与集成
查看>>
C2. Power Transmission (Hard Edition)(线段相交)
查看>>
STM32F0使用LL库实现SHT70通讯
查看>>
Atitit. Xss 漏洞的原理and应用xss木马
查看>>
MySQL源码 数据结构array
查看>>