单例模式 饿汉与饱汉

饱汉式 :有线程安全问题,加锁

public class Singleton  {    private Singleton(){}//构造器私有化,外部不能直接创建。    private static Singleton instance=null;    public  synchronized static Singleton getInstance(){ //同步方法,保证线程安全。        if(instance==null){            instance=new Singleton();        }        return instance;    }}

饿汉式
public class Singleton2 {    private Singleton2(){    }    private  static  Singleton2 singleton2=new Singleton2();//立即加载    public static Singleton2 getSingleton2(){        return singleton2;    }}


原文地址:https://www.cnblogs.com/lee18/p/11593995.html

时间: 2024-10-30 11:05:09

单例模式 饿汉与饱汉的相关文章

单例模式的简单描述(饿汉式,饱汉式,双重锁模式)

一.什么时候使用单例模式: 当实例存在多个会引起程序逻辑错误的时候 二.好处: 1.减少内存的占用 2.单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例. 3.因为类控制了实例化过程,所以类可以灵活更改实例化过程 三.缺点: 1.开销 虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销.可以通过使用静态初始化解决此问题. 2.可能的开发混淆 使用单例对象(尤其在类库中定义的对象)时,开发人员必须记住自己不能使用new关键字实例化对

JAVA中的饿汉式和饱汉式单例模式及jdk中Runtime类的单例模式实现方式详解

一.描述 单例模式是一种非常常见的设计模式,即一个类只能有一个对象(实例),一般通过将该类的构造器私有化,来阻止在该类外创建该类的对象,并提供给外界一个唯一的对象(这个对象在该类中创建). java中的单例模式常见的有两种实现方式,一种是恶汉方式,即将该类对象用static休息并且在类加载的时候进行初始化:另一种是饱汉方式,在程序中需要用到该对象的时候才初始化,一旦初始化一次就不会再重新生成该对象. JDK中的Runtime类其实也是一种单例模式,而且其采用的是饿汉的方式. 二.源代码 pack

设计模式一:饱汉式单例(双重锁)

一.简介 单例的目的保证该对象只能存在一个,只有应用场景相当多,列如jedisUtils.. 二.代码 测试代码如下: /** * @ClassName: SingeTest * @Description: 饱汉式单例 * @author: ck * @date: 2019年2月23日 下午3:37:47 */ public class SingeTest { public static SingeTest singeTest=null; // 将构造方法私有化,使其只能通过getSingeTe

[转]''\\=DevExpress 中 汉化包 汉化方法

[DevExpress]DevExpress 中 汉化包 汉化方法 2016-02-17 21:13 1781人阅读 评论(0) 收藏 举报  分类: DevExpress(24)  版权声明:本文为博主原创文章,未经博主允许不得转载. 第一步: 在Debug 下添加 zh-CN 汉化包(自行下载) 第二步: 在 Program.cs中添加以下代码 : System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Glob

软件汉化————Apktool汉化通用教程 转XDA

本篇教程以简单的小软件PreHome为例,软件很小,利于大家学习. 首先我们要知道汉化软件的步骤,然后学会使用apktool工具.工具可以到第四课下载.里面包含了apktool全部工具,我们将其解压,最好为汉化建立一个专用文件夹,这样可以养成好习惯,利于学习汉化.而且文件夹东西太多会很乱. 软件汉化步骤:1.反编译apk,反编译成Note++等工具能够读取的文本形式.2.翻译,使用Note++等工具进行文本翻译.3.回编译apk,回编译成完整的apk安装包.4.签名与Zipalign对齐处理.工

Java-设计模式-单例模式-饿汉模式、懒汉模式

//-------------------------------------------------------------饿汉模式--开始----------------------------------------------------------- package com.study.DesignPattern01; /** * 创建一个饿汉模式的单例 * @author ZLHome *有些对象,我们只需要一个,如果多了,那么就可能导致数据不一致, 占用资源过多等等,比如: 配置文

单例饿汉式和饱汉式各自的有缺点(转)

单例模式应用于一个类只有一个实例的情况,并且为其实例提供一个全局的访问点. 特点: 1.一个类只有一个实例 2.自己创建这个实例 3.整个系统只能用这个实例 应用场景 外部资源:每台计算机有若干个打印机,但只能有一个PrinterSpooler,以避免两个打印作业同时输出到打印机. 内部资源:大多数软件都有一个(或多个)属性文件存放系统配置,这样的系统应该有一个对象管理这些属性文件. 实现方式 1.饿汉式:单例实例在类装载时就构建,急切初始化.(预先加载法) /** * 饿汉式(推荐) * */

单例模式 饿汉式 ARC

有了前两篇的文章这里直接给出代码,这种方法不是纯粹的饿汉式,比较懒汉式代码会容易一点点,但是苹果官方不推荐,了解一下就好. 此时没有多线程的困扰,使用之前就创建一个单例对象,此时还没有线程.所以不需要加锁. static id _instance = nil; +(void)load{//该类加载之后load就会被自动调用, _instance = [[self alloc] init]; } alloc new 都会来到这里,所以在这里重写更合适. + (id)allocWithZone:(s

单例模式--饿汉、懒汉、多线程以及多线程下改进

代码注释有介绍 package singleton; /** * @author: ycz * @date: 2018/12/24 0024 22:15 * @description: 懒汉模式 */ public class SingleTon1 { public SingleTon1(){} private static SingleTon1 instance1 = null; public static SingleTon1 getInstance1(){ if (instance1==n