public class InstanceSampleTest {
public static void main(String[] args) { /** 单例设计模式的 饿汉式和懒汉式
* 单例模式,我们首先必须将类在一个虚拟机中只能产生一个对象,因此应该做到以下几步:
* a:私有化构造方法,这样在该类的外边就不能用new操作来创建对象,但是在类的内部可以创建该类的对象。
* b:调用该类的某个静态方法以返回内部创建的对象,因为该类的外部不发得到创建的对象,引用用静态的方法来返回。
*
*
* 饿汉模式:在类加载时就完成了初始化,但是加载比较慢,获取对象比较快。
* 饿汉模式是线程安全的,在类创建好一个静态对象提供给系统使用,
* 懒汉模式:在类加载的时候不被初始化。延时加载
* 懒汉模式在创建对象时不加上synchronized,会导致对象的访问不是线程安全的(多线程)
*/
Single s1 = Single.getInstance();
Single s2 = Single.getInstance();
System.out.println(s1 == s2); //true 两者内存地址一样 指向同一个对象 Single2 s3 = Single2.getInstance();
Single2 s4 = Single2.getInstance();
System.out.println(s3 == s4); //true 两者内存地址一样 指向同一个对象
}
} /**
* 单例设计模式 饿汉式(常用)
*/
class Single {
private static final Single s = new Single(); private Single() {
} public static Single getInstance() {
return s;
}
} /**
* 单例设计模式 懒汉式(面试)
*/
class Single2 {
private static Single2 s = null; private Single2() {
} public static Single2 getInstance() {
/**
* 懒汉式使用双重验证锁解决多线程的线程安全问题,饿汉式不存在线程安全
*/
if (s == null) {
synchronized (Single2.class) {
if (s == null) {
s = new Single2();
}
}
}
return s;
}
}

  

Java 单例设计模式之 饿汉式和懒汉式的更多相关文章

  1. Java中单例设计模式,饿汉式和懒汉式

    Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式单例. 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建自己的唯 ...

  2. Java---15---单例设计模式:---饿汉式和懒汉式

    概念: 单例模式确保某个类仅仅有一个实例.并且自行实例化并向整个系统提供这个实例.   单例模式有下面特点: 1.单例类仅仅能有一个实例 2.单例类必须自己给自己创建自己的唯一实例 3.单例类必须给全 ...

  3. 设计模式——懒汉式单例类PK饿汉式单例类

    前言 我们都知道生活中好多小软件,有的支持多IP在线,有的仅仅局限于单个IP在线.为什么这样设计,在软件开发阶段就是,有需求就是发展.这就是软件开发的一个设计模式--懒汉式单例类和饿汉式单例类. 内容 ...

  4. java基础10 单例模式之饿汉式和懒汉式单例

    前言: 软件行业中有23中设计模式 单例模式    模版模式    装饰者模式    观察者模式    工厂模式    ........... 单例模式 1. 单例模式包括 1.1 饿汉式单例 1.2 ...

  5. Java面试 - 什么是单例设计模式,为什么要使用单例设计模式,如何实现单例设计模式(饿汉式和懒汉式)?

    什么是单例设计模式? 单例设计模式就是一种控制实例化对象个数的设计模式. 为什么要使用单例设计模式? 使用单例设计模式可以节省内存空间,提高性能.因为很多情况下,有些类是不需要重复产生对象的. 如果重 ...

  6. Java单例设计模式(实现Java的一个类只有一个对象)

    单例设计模式的定义:单例设计模式是一种软件设计模式,在它的核心包含一个称为单例类的核心类. 核心便是希望一个类只有一个对象.  如何实现类在内存中只有一个对象呢? 第一步:构造私有:第二步:本身提供一 ...

  7. Java中如果把构造方法也私有化,如何创建对象?Java的单例设计模式——饿汉式和懒汉式区别

    Java的单例模式——饿汉式 package com.swift; //Java单例设计模式——恶汉式 public class SinglePerson { private String name= ...

  8. Java单例设计模式的实现

    1. 单例设计模式的定义 单例设计模式确保类只有一个实例对象,类本身负责创建自己的对象并向整个系统提供这个实例.在访问这个对象的时候,访问者可以直接获取到这个唯一对象而不必由访问者进行实例化. 单例设 ...

  9. java单例设计模式总结及举例

    * 设计模式:前人总结出来的经验,被后人直接拿来使用. * 单例设计模式:一个类只允许有一个对象,将这个对象作为一个全局的访问点,提供出去供大家使用. * 分析: * 1.用户只能有一个对象 * 2. ...

随机推荐

  1. RabbitMQ 应用一

    (百度百科)MQ全称为Message Queue,消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消息传递指的 ...

  2. C#汉字转换成全拼的拼音

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. Django 报错总结

    报错: AttributeError: 'NoneType' object has no attribute 'split' 最近在写网站中遇到一个问题,就是题目上所写的:AttributeError ...

  4. 【转载】C#使用Trim方法去除字符串前后的所有空格

    在C#语言程序开发过程中,很多时候需要对字符串对象的前后空格进行去除,此时就需要使用到Trim()方法来实现这个功能,Trim()方法可以快速去除字符串前端和后端的所有空格. 例如有个字符:strin ...

  5. JS权威指南读书笔记(一)

    第一章 JavaScript概述 1 JS是一门高端的.动态的.弱类型的编程语言,非常适合面向对象和函数式的编程风格.   第二章 词法结构 1 JS程序是用Unicode字符集编写的. 2 JS是区 ...

  6. Java并发 行级锁/字段锁/表级锁 乐观锁/悲观锁 共享锁/排他锁 死锁

    原文地址:https://my.oschina.net/oosc/blog/1620279 前言 锁是防止在两个事务操作同一个数据源(表或行)时交互破坏数据的一种机制. 数据库采用封锁技术保证并发操作 ...

  7. Pyspark读取csv文件

    #_*_coding:utf-8_*_ # spark读取csv文件 #指定schema: schema = StructType([ # true代表不为null StructField(" ...

  8. Python安装package_name包

    官网:https://packaging.python.org/tutorials/installing-packages/ 首先查看已安装的包: 1. 命令行模式输入:pydoc modules 2 ...

  9. linux文件权限命令chmod学习

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而禁 ...

  10. 记一次oracle 11g数据导入

    1.ORACLE数据库数据导入到测试库环境 172.15.1.51 root  kic@test 172.15.1.52 root 一般先将数据导入52的环境(配置比较低),再将数据导入51的环境(本 ...