• 设计模式----单例模式


    一、模式定义

      单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。

    二、分类

      (1)懒汉式:延迟加载方式。

      (2)饿汉式 :加载时就new出对象,线程安全,没有延时加载的优势。

    三、代码实现

      1.饿汉式单例(立即加载,线程安全)

     1 public class SingletonDemo1 {
     2     private static SingletonDemo1 instance = new SingletonDemo1();
     3     
     4     private SingletonDemo1(){
     5     
     6     }
     7     
     8     public static SingletonDemo1 getInstance(){
     9         return instance;
    10     }
    11 }

      2.懒汉式单例(延迟加载,使用synchronized同步锁保证只能创建一个实例,但是会降低效率,下一个线程想要获取对象,就必须等待上一个线程释放锁之后,才可以继续运行。)

     1 public class SingletonDemo2 {
     2     private static SingletonDemo2 instance;
     3     private SingletonDemo2(){
     4     
     5     }
     6     
     7     public static synchronized SingletonDemo2 getInstance(){
     8         if(instance==null){
     9             instance = new SingletonDemo2();
    10         }
    11         return instance;
    12     }
    13 }

      3.双重检测锁式(将同步内容放入到if内部,由于编译器优化原因和JVM底层内部模型原因偶尔会出问题,不建议使用)

      4.静态内部类式(懒加载:一开始不会初始化静态内部类,只有调用getInstance()时才初始化,类加载过程中天然线程安全,调用效率高)

     1 public class SingletonDemo3 {
     2     private static class SingletonClassInstance{
     3         private static final SingletonDemo3 instance = new SingletonDemo3();
     4     }
     5     
     6     private SingletonDemo3(){
     7         
     8     }
     9     
    10     public static SingletonDemo3 getInstance(){
    11         return SingletonClassInstance.instance;
    12     }
    13 }

      5.枚举单例

     1 class Resource{
     2 }
     3  
     4 public enum SomeThing {
     5     INSTANCE;
     6     private Resource instance;
     7     SomeThing() {
     8         instance = new Resource();
     9     }
    10     public Resource getInstance() {
    11         return instance;
    12     }
    13 }
  • 相关阅读:
    python之高阶函数
    [第二版]多线程的发送与接收
    基本函数与结构
    unp.h
    gdb调试命令
    System V共享内存区
    Posix 共享内存区
    System V信号量
    Posix 信号量
    记录锁
  • 原文地址:https://www.cnblogs.com/blzm742624643/p/9962002.html
Copyright © 2020-2023  润新知