java单例问题
之前看资料,有人根据对象的创建时间将单例的实现分为懒汉式和饿汉式:
懒汉式:
 public class Singleton {
     private volatile static Singleton instance;
     private Singleton(){
             System.out.println("Singleton has loaded");
         }
     public static Singleton getInstance() {
         if (instance == null) {
             synchronized (Singleton.class) {
                 if (instance == null) {
                     instance = new Singleton();
                 }
             }
         }
         return instance;
     }
 }
1 通过延迟加载,提高内存使用效率;
2 双重为空判断:第一个判断可以减少锁判断;第二个判断可以减少对象重复重复创建;
饿汉式:
 public class Singleton {
     // 通过静态实现单例,但是存在创建时间过早问题
     privatestatic Singleton instance = new Singleton();
     private Singleton(){
             System.out.println("Singleton has loaded");
         }
     public static Singleton getInstance() {
         return instance;
     }
 }
1 代码精简;
2 通过静态实现在类加载时就创建对象,避免了同步问题;但是也造成实例化过早,存在内存浪费;
按需饿汉式:
public class Singleton {
    private Singleton(){
        System.out.println("Singleton has loaded");
    }
    public static Singleton getInstance() {
        return Quote.instance;
    }
    private static class Quote {
        private static final Singleton instance = new Singleton();
    }
}
1 使用内部类来创建对象,实现延迟加载;
参考资料:
https://baijiahao.baidu.com/s?id=1604691509810750218&wfr=spider&for=pc
java单例问题的更多相关文章
- java单例的几种实现方法
		java单例的几种实现方法: 方式1: public class Something { private Something() {} private static class LazyHolder ... 
- java单例类/
		java单例类 一个类只能创建一个实例,那么这个类就是一个单例类 可以重写toString方法 输出想要输出的内容 可以重写equcal来比较想要比较的内容是否相等 对于final修饰的成员变量 一 ... 
- java单例-积木系列
		一步步知识点归纳吧,把以前似懂非懂,了解表面,知道点不知道面的知识归一下档. 懒汉式单例: 私有化构造函数,阻止外界实例话对象,调用getInstance静态方法,判断是否已经实例化. 为什么是懒 ... 
- Java单例类的简单实现
		对于java新手来说,单例类给我的印象挺深,之前一道web后台笔试题就是写单例类.*.*可惜当时不了解. 在大部分时候,我们将类的构造器定义成public访问权限,允许任何类自由创建该类的对象.但在某 ... 
- 【Java学习笔记之三十】详解Java单例(Singleton)模式
		概念: Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式单例. 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建 ... 
- 转:java单例设计模式
		本文转自:http://www.cnblogs.com/yinxiaoqiexuxing/p/5605338.html 单例设计模式 Singleton是一种创建型模式,指某个类采用Singleton ... 
- 熟悉的味道——从Java单例写到C++单例
		设计模式中,单例模式是常见的一种.单例模式需要满足以下两个条件: 保证一个类只能创建一个示例: 提供对该实例的全局访问点. 关于单例最经典的问题就是DCL(Double-Checked Lock),今 ... 
- java单例五种实现模式梳理
		java单例五种实现模式 饿汉式(线程安全,调用效率高,但是不能延时加载) 一上来就把单例对象创建出来了,要用的时候直接返回即可,这种可以说是单例模式中最简单的一种实现方式.但是问题也比较明显.单例在 ... 
- JAVA单例实现方式(常用)
		JAVA单例实现方式(常用) public class Singleton { // Q1:为什么要使用volatile关键字? private volatile static Singleton u ... 
- Java单例设计模式的实现
		1. 单例设计模式的定义 单例设计模式确保类只有一个实例对象,类本身负责创建自己的对象并向整个系统提供这个实例.在访问这个对象的时候,访问者可以直接获取到这个唯一对象而不必由访问者进行实例化. 单例设 ... 
随机推荐
- 傅里叶变换通俗解释及快速傅里叶变换的python实现
			通俗理解傅里叶变换,先看这篇文章傅里叶变换的通俗理解! 接下来便是使用python进行傅里叶FFT-频谱分析: 一.一些关键概念的引入 1.离散傅里叶变换(DFT) 离散傅里叶变换(discrete ... 
- Vue命名路由
			Vue命名路由 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ... 
- javascript 给事件任务一个缓冲区
			在编写前端的过程中,经常会监听事件并执行任务,我在这抛出2个比较常见的场景: 1.输入关键字搜索如果你监听input的chage事件,会有一个问题,在使用中文输入法时,你输入的几个拼音字母都会被触发我 ... 
- 《数据结构与算法之美》 <04>链表(上):如何实现LRU缓存淘汰算法?
			今天我们来聊聊“链表(Linked list)”这个数据结构.学习链表有什么用呢?为了回答这个问题,我们先来讨论一个经典的链表应用场景,那就是 LRU 缓存淘汰算法. 缓存是一种提高数据读取性能的技术 ... 
- Linux命令——w、who、whoami、lastlog、last
			参考:Linux w Command Tutorial for Beginners (5 Examples) Linux who Command Tutorial for Beginners (8 E ... 
- 【2017-12-06】winfrom 窗体自启最大化,控件自适应
			先将窗体windowstate属性设置为Maximized public partial class Form1 : Form { public Form1() { InitializeCompone ... 
- 优秀技术Leader应具备的六项能力
			技术Leader是互联网公司中,战斗在一线的技术领导者,技术Leader们能力的强弱,决定着公司整个技术团队的战斗力,结合我之前管理上百人技术团队的经验,谈谈我心目中优秀技术Leader五个方面的能力 ... 
- FreeRTOS调度器
			FreeRTOS----调度器 调度器的启动流程分析 当创建完任务之后,会调用vTaskStartScheduler()函数,启动任务调度器: void vTaskStartScheduler( vo ... 
- [Python] Codecombat 攻略 Sarven 沙漠 (1-43关)截止至36关
			首页:https://cn.codecombat.com/play语言:Python 第二界面:Sarven沙漠(43关)时间:4-11小时内容:算术运算,计数器,while循环,break(跳出循环 ... 
- Numpy API学习
			Numpy 常用API学习(全) 一.介绍 NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库 ... 
