单例模式:用来创建独一无二的,只能有一个实例的对象。/确保一个类只有一个实例,并提供一个全局访问点。
单例可以延迟实例化,我们不需要这个实例,就不会产生。
构造器:为了创建一个类的实例。实例化对象:单例模式,没有公开的构造器。
public MyClass{
private MyClass();
public static synchronized MyClass getInstance(){
return new MyClass();
}
}
MyClass.getInstance();
单例模式:
public class Singletion{
private static Singletion uniqueInstance;
private Singletion();
public static Singletion getInstance(){
if(uniqueInstance == null){
return new Singletion();
}
return uniqueInstance;
}
}
处理多线程,只要把getInstance方法变成同步(synchronized)方法
加synchronized后每个线程在进入这个方法之前,要等候别的线程离开这个方法。
存在问题,只有第一次执行方法需要同步。
使用急切创建实例,不用延迟实例化
public class Singletion{
private static Singletion uniqueInstance = new Singletion();
private Singletion();
public static Singletion getInstance(){
return uniqueInstance ;
}
}
并发编程方式:
public class Singletion{
private volatile static Singletion uniqueInstance;
private Singletion();
public static Singletion getInstance(){
if(uniqueInstance == null){
synchronized (Singletion.class){
if(uniqueInstance == null){
uniqueInstance == new Singletion();
}
}
}
return uniqueInstance;
}
}
java中单例模式条件:私有构造器,一个静态方法,一个静态变量。
本文深入解析单例模式,探讨其在确保类唯一实例及全局访问点中的应用。介绍单例模式的基本实现,包括延迟实例化、急切实例化及解决多线程问题的方法。并详细解释如何使用synchronized关键字和volatile变量来保证线程安全。
1万+

被折叠的 条评论
为什么被折叠?



