博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单例模式
阅读量:5157 次
发布时间:2019-06-13

本文共 1092 字,大约阅读时间需要 3 分钟。

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;  }

 

转载于:https://www.cnblogs.com/holdon521/p/4353456.html

你可能感兴趣的文章
《玩转D语言系列》一、通过四个版本的 Hello Word 初识D语言
查看>>
破译实践
查看>>
星星评分
查看>>
validform 一行代码完成所有验证
查看>>
工作中上的一点思考
查看>>
bzoj 2440: [中山市选2011]完全平方数【莫比乌斯函数+二分】
查看>>
android Base64 加密
查看>>
python 遍历文件夹
查看>>
day17 appium环境搭建
查看>>
图的最短路径
查看>>
解决:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
查看>>
jquery笔记
查看>>
(转载)Manacher'sAlgorithm: O(n)时间求字符串的最长回文子串
查看>>
oracle的存储过程
查看>>
oracle 11g 通过在线重定义方式修改表结构
查看>>
基于webpack模块加载,ts里对系统对象prototype的扩展
查看>>
将博客搬至CSDN
查看>>
C++包含头文件时尖括号和双引号区别
查看>>
徒手教你制作运维监控大屏
查看>>
.NET 将 .config 文件嵌入到程序集
查看>>