设计模式之单例模式

来源:互联网 发布:androidframework源码 编辑:程序博客网 时间:2024/05/16 11:54

单例模式的定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

具体代码实现:

package SingleObjectModel;/** * 单例模式 * @author minGe_000 * */public class Student {public String name;//1.构造方法私有化private Student(){}private Student(String name){this.name = name;}//2.提供唯一的对象private static Student stu;//3.提供一个get实例的函数public static synchronized Student getInstance(String n){if(stu==null){stu = new Student(n);}return stu;}}

其中构造方法私有化是为了限制产生多个对象;

里面的静态方法是为了获取唯一的实例对象;

注意问题在多个线程同时执行的时候,如

new Thread(){   public void run() {Student stu = Student.getInstance("abc");};}.start();new Thread(){   public void run() {Student stu1 = Student.getInstance("abc");};}.start();
因为对象的初始化话需要时间在进行if(stu==null)判断时候俩个线程可能同时判断为真继续运行下去,此时在内存中就回有两个对象了,因此在线程方法前加synchronized 关键字来解决线程不安全因素(饿汉式)。



0 0
原创粉丝点击