单例模式(java)
来源:互联网 发布:unity3d 离线安装 编辑:程序博客网 时间:2024/06/10 03:14
单例模式
特点:只能有一个实例,单例模式的实例必须是自己创建,要给其他对象提供这一实例。
分类:懒汉式和饿汉式
饿汉式相对实现比较简单:上来先创建一个类的实例,然后定义成构造方法私有化,不让其他类再创建该类的实例。
public class Singleton{
private singleton();
private static final Singleton s = new Singleton();
public static Singleton getInstance(){
return s;
}
}
饿汉式相对实现比较多:
1)该方式实现的比较基础,但是不能够实现实现线程安全
public class Singleton{
private singleton(){
}
private static Singleton s =null;
public static Singleton getInstance(){
if(s==null){
s = new Singleton();
}
return s;
}
2)该方式是第一种方式的改进版加上一个关键词synchronized
public class Singleton{
private singleton(){
}
private static Singleton s =null;
public synchronized static Singleton getInstance(){
if(s==null){
s = new Singleton();
}
return s;
}
3)第三种方式采用的是双重检索的方式,这种方式可以减少同步锁带来的性能影响
public class Singleton{
private singleton(){
}
private static Singleton s =null;
public static Singleton getInstance(){
if(s==null){
synchronized(Singleton.class){
if(s==null){
s = new Singleton();
}
}
}
return s;
}
4)第四种方式使用的是静态内部类的方式,这种方式使用的主要是静态内部类的方式.。public class Singleton{
private singleton(){
}
public static class Sin{
private static final Singleton s = new Singleton();
}
public static Singleton getInstance(){
return Sin.s;
}
}
注:个人觉得第四种实现方式相对比较好,不仅实现了线程安全,相对也不会出现多次判断同步锁带来的性能影响。
注:这是本人看了一些文章总结出的几种常见的单利模式,不喜勿喷。
- 单例模式(java)
- 单例模式(java)
- 单例模式(JAVA)
- 单例模式(java)
- 单例模式(java)
- 单例模式(java)
- java设计模式(单例模式)
- JAVA设计模式(单例模式)
- 设计模式----单例模式(java)
- (设计模式)单例模式-java
- java单例模式
- Java单例模式
- java单例模式
- java单例模式
- Java单例模式
- Java单例模式
- java单例模式
- Java单例模式
- Fedora23上编译openGL程序前的准备工作
- java-IO与装饰器模式
- EditText 设置字数限制,超过字数限制时 toast 提示并且输入无效
- springboot源码分析11-ApplicationContextInitializer原理
- kali使用u盘安装提示“无法挂载光盘....”的解决方案
- 单例模式(java)
- 大数据 技术栈
- 关于Navicat premium 连接Oracle连接不上的问题
- 网页端快速实现评分
- Python之memcache(一)
- 希狄微HL7005D快充芯片简介
- [自用门户]加密解密,每次生成的结果不一样(Base64Utils+RSAUtils)
- 查看和设置文件的格式
- PHP + 小程序开发过程