/**
*
*/
package singleton;
/**
* 描述:单例设计懒汉式和饿汉式单例;
* 设计模式:针对某一问题行之有效的方法
* 单例模式:保证同一类中只有一个对象
* 单例模式的步骤:
* 1、私有化构造函数;
* 2、在本类中新建本类的对象;
* 3、提供一个对外访问的方法。
*@author 李齐超 *1832655017@qq.com
* 2018年8月29日 下午8:24:49
*/
public class Test01 {
public static void main(String[] args) {
Single.getInstance();
Single1.getInstance();
}
}
/**
* 饿汉式单例
* 描述:类加载的时候就实例化对象,可能会造成资源浪费。但是实际开发中,饿汉式单例应用开发多。
*
*/
class Single{
private Single() {}
private static Single s=new Single();
public static Single getInstance() {
return s;
}
}
/**
* 懒汉式单例的特征是延迟加载,存在线程安全的问题。
* 解决安全问题的方式是加锁,加的锁是本类所属的字节码对象。
* 加锁的方式有两种,同步函数、同步代码块,但是同步函数需要每次判断锁的存在,会在浪费资源;
* 一般会推荐同步代码块,同步代码块也可以优化,优化的方式是双重判断,减少判断的次数。
* 描述:
*@author 李齐超 *1832655017@qq.com
* 2018年8月29日 下午8:43:16
*/
class Single1{
private Single1() {}
private static Single1 s=null;
public static Single1 getInstance() {
if(s==null) {
//在if判断语句中,()里面都是==
synchronized (Single1.class) {
if(s==null)
s=new Single1();
}
}
return s;
}
}
单例模式问题详解
最新推荐文章于 2023-04-22 22:00:04 发布