zoukankan      html  css  js  c++  java
  • 单例模式

    1. 单例模式

    以下是恶汉模式,类初始化的时候,就进行了new对象,如果没有调用getInstance方法,那么系统就提前消耗掉了内存

      public class  singleton {
           
         private static singleton  sing = new singleton();
          
         private singleton (){}
         
         public static singleton  getInstance (){
               return sing;
         }
     }


    2. 以下为懒汉模式

       此时的懒汉模式,是线程不安全的,当多线程访问的时候,会同时new多个实例

    1.package net.chopsuey.singleton;   
    2.  
    3.public final class LazySingleton   
    4.{   
    5.    private static LazySingleton singObj = null;   
    6.  
    7.    private LazySingleton()   
    8.    {   
    9.    }   
    10.  
    11.    public static LazySingleton getSingleInstance()   
    12.    {   
    13.        if (singObj == null)   
    14.        {   
    15.            singObj = new LazySingleton();   
    16.        }   
    17.        return singObj;   
    18.    } 

    为解决多线程问题,可以写一个内部类,当使用的时候才去实例化

    一个静态内部类内的一个静态成员就可以保证它只在类被加载时只初始化一次。因此不管有多少个线程来调用它,都只能得到同个实例(类被加载时初始化的那个)。

      public class  singleton {
         static class  Userleton {
            static sinleton sing = new singleton();
                 
          }    
          
          public singleton getInstance(){
             return Userleton.sing;
      }   
        
  • 相关阅读:
    tomcat常见错误及解决方案
    MySQL 5.6 for Windows 解压缩版配置安装
    win7 cmd 操作mysql数据库
    @Responsebody与@RequestBody
    ajax常用参数
    JSP和servlet有什么区别?
    面试 小总结
    cocoapods导入三方库头文件找不到问题
    git笔记
    iOS裁剪,缩放图片白边问题解决办法
  • 原文地址:https://www.cnblogs.com/holdon521/p/4353456.html
Copyright © 2011-2022 走看看