多线程的单例设计模式:
保证某个类中内存中只有一个对象
(1)设计模式:
解决某类问题行之有效的方法,是一种思想,是规律的总结。
(2)用来保证某个类在内存中只有一个对象
(3)保证唯一性的思想及步骤
1、为了避免其他程序建立该类对象,先禁止其他程序建立该类对象,即将构造函数私有化。
2、为了其他程序访问到该类对象,须在本类中创建一个该类私有对象。
3、为了方便其他程序访问到该类对象,可对外提供一个公共访问方式。
(4)单例设计模式的两种方式
A:饿汉式 当类加载的时候,就创建对象。
class Student
{
private Student() {} //将构造函数私有化,不让别的类建立该类对象
private static final Student s = new Student(); //自己建立一个对象
public static Student getInstance() //提供一个公共访问方式
{
return s;
}
}
B:懒汉式 当使用的使用,才去创建对象。
class Student
{
private Student() {}
private static final Student s = null;
public static Student getInstance()
{
if(s==null)
{
s= new Student();
}
return s;
}
}
(5)饿汉式和懒汉式的区别:
1、饿汉式是类一加载进内存就创建好了对象;
2、懒汉式则是类才加载进内存的时候,对象还没有存在,只有调用了getInstance()方法时,对象才开始创建。
3、懒汉式是延迟加载,如果多个线程同时操作懒汉式时就有可能出现线程安全问题,解决线程安全问题可以加同步来解决。但是加了同步之后,每一次都要比较锁,效率就变慢了,所以可以加双重判断来提高程序效率。
如将上述懒汉式的Instance函数改成同步:
public static Single getInstance()
{
if(s==null)
{
synchronized(Single.class)
{
if(s==null)
s=new Single();
}
}
return s;
}
注:开发常用饿汉式,因为饿汉式简单安全。懒汉式多线程的时候容易发生问题。

1318

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



