JAVA设计模式之单例模式

本文详细介绍了Java中单例模式的概念及其实现方式。探讨了单例模式的特点,并提供了两种实现方法:一种是非线程安全的懒汉式实现,另一种是线程安全且在类加载时就完成实例化的饿汉式实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概念:
  Java中单例模式是一种常见的设计模式,单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

 单例模式有以下特点:
  1、单例类只能有一个实例。
  2、单例类必须自己创建自己的唯一实例。
  3、单例类必须给所有其他对象提供这一实例。



//在第一次调用的时候实例化自己 ,非线程安全
public class Singleton {
private Singleton() {}
private static Singleton single=null;
//静态工厂方法
public static Singleton getInstance() {
if (single == null) {
single = new Singleton();
}
return single;
}
}



上面方式它是线程不安全的,并发环境下很可能出现多个Singleton实例,所以需要进行改造

第一种方式,需要对getInstance这个方法改造,保证了单例的线程安全



public static synchronized Singleton getInstance() {
if (single == null) {
single = new Singleton();
}
return single;
}




第二种方法

类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以天生是线程安全的。


public class Singleton {
private Singleton() {}
private static final Singleton single = new Singleton();
//静态工厂方法
public static Singleton getInstance() {
return single;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值