天天看点

单例设计模式(饿汉式,懒汉式(1,有线程安全问题,2,安全高效))

package cn.itcast.mobilesafexian2.test;

public class Student {

//2 单例模式 (懒汉式:在使用的时候创建){有线程安全问题:因为需要(共享数据s和多步骤)判断,造对象,返回}

//懒汉式用了一种思想 :延时加载(用的时候再去创建)

//这种方法安全了 但影响效率

/* private Student(){};

private static Student s = null;

public synchronized static Student GetStudent(){//不安全 加锁但浪费性能

1,s= new Student();//存在问题每次调用都要 创建对象{所以加个判断 if(snull)}*

//s1,s2,s3

if(snull){

//s1,s2,s3

s=new Student();

}

return s;
           

}*/

//懒汉式(安全高效模式)

private Student(){};

private static Student s = null;

public static Student GetStudent(){//不安全 加锁

/1,s= new Student();//存在问题每次调用都要 创建对象{所以加个判断 if(s==null)}

*/

if(snull){

// A, B

//只有第一次进来时有锁子

synchronized (Student.class) {

//当ab 都进进来时

if(snull){

s=new Student();

}

}

}

return s;

}

}

继续阅读