[Java]Java的静态构造函数 多线程下安全的单例模式

来源:互联网 发布:阿里巴巴旗下所有软件 编辑:程序博客网 时间:2024/05/17 14:20
我也在看书的时候 看到C#的静态构造方法 也在想JAVA有没有同样的东西。

先来看一看为什么C#的静态构造方法为什么会存在

我们平常普通的做法是
public class Teacher {private static Teacher mTeacher;private Teacher() {}public static Teacher getInstance() {if (mTeacher == null) {mTeacher = new Teacher();}return mTeacher;}}


但是,这样做是不能防止多线程同时调用的。

例如,有A线程,B线程同时初始化这个类

判断的时候,都能初始化到该类的对象。这就违背了单例模式的初衷。

所以,改进的方法可以是

public class Student {private static Student mStudent = new Student();private Student() {}public static Student getInstance() {return mStudent;}}

此实例是跟该类在加载的时候就初始化出来了。

这样就有效地防止了多线程下的单例问题
0 0