java单例模式

在java中一共有23种设计模式,
这里学习的是其中的一种:单例设计模式

  • 首先,我们说一下单例的定义:

    • 单例就是程序在运行期间不管通过什么途径,执行创建的对象都是同一个。
    • 而且对象的生命周期是整个项目运行期间。
    • 单例有两种写法:饿汉式与懒汉式
      下面我们来依次介绍一下:
  • 在写单例的时候,我们需要定义一个类:

//饿汉式
class Person {
    //单例可以实现共享数据
    //加static可以是实现对象的生命周期为整个项目运行期间
    static Person person = new Person();
    //不管在哪里调用的都是person对象
    static Person getInstance() {
        return person;
    }
    //我们每次都是通过调用getInstance这个方法来创建对象,我们这个方法会返回person,所以每次都是同一个对象;
}

//懒汉式
class Student {
    //volatile  (为了防止栈的缓存) 每个线程都有自己的栈,他与synchronized构成双层保险,确保唯一性;
    volatile static Student stu = null;
    static Student getInstance() {
        synchronized (Student.class) {
            if (stu == null) {
                stu = new Student();
            }
        }
        return stu;
    }
}
  • 我们可以在main函数中测试一下
  • 这里我们写一个循环,创建10个student对象,
public static void main(String[] args) {
        //Person p = Person.getInstance();
        for (int i = 0; i < 10; i++) {
            new Thread(new Runnable() {
                public void run() {
                    Student student = Student.getInstance();
                    System.out.println(student);
                }
            }).start(); 
        }
    }
  • 打印会发现,打印的都是同一个对象;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 主要参考自 菜鸟教程 单例模式是JAVA中最简单的模式之一,这种模式属于创建型模式,它提供了一种创建对象的最...
    东溪95阅读 3,555评论 0 2
  • 一、前言 作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为...
    manimaniho阅读 3,157评论 0 0
  • 1. 实现单例模式 饿汉模式和懒汉模式单例模式根据实例化时机分为饿汉模式和懒汉模式。饿汉模式,是指不等到单例真正使...
    aaron1993阅读 1,586评论 0 0
  • 方克己阅读 1,644评论 0 0
  • 喜欢躲在一个舒服的角落 捧一本喜欢的书 看上几页 喜欢沉思 假装深沉 却单纯喜欢安静 望着那一丢丢人群 和玻璃窗户...
    该泥巴O啥阅读 1,358评论 0 1