Java的单例模式(singleton)
为什么需要单例?只因为国家的独生子女政策(当然现在可以生2个)
单例是一个很孤独的物种,因为它的类里面做多只有也仅只有它一个。
常见的是懒汉及饿汉模式,
1.懒汉,为什么这么叫,看看英文,原为lazy loading,lazy(懒惰的),laoding(音如同佬),叫懒佬,然后一个佬==一条汉子,为好听,故懒汉。
最基础的懒汉模式:
//单例模式
public class Singleton { // 私有化构造方法,使得外部不可能有由new产生实例;
private Singleton() {
} // 懒汉模式
private static Singleton instance = null;
//不加synchronized,线程有问题;
public static Singleton getInstance() {
if (instance == null)
instance = new Singleton();
return instance;
} }
上面有线程安全的问题,如果多线程情况下,可以得出多个实例。
加入synchronized 改进后:
//单例模式
public class Singleton { // 私有化构造方法,使得外部不可能由用new产生实例;
private Singleton() {
} // 懒汉模式
private static Singleton instance = null;\
//不加synchronized,线程有问题;
public static synchronized Singleton getInstance() {
if (instance == null)
instance = new Singleton();
return instance;
} }
懒,因为用到了才加载。
饿汉,汉就不解释,上面有。为什么叫饿?因为不管你有没使用这个单例,它都会实例化,在内存中,好像一个很饥饿的人,不管什么,先吃了再说。
具体如下:
//饿汉模式
public class Singleton2 {
//私有化构造方法,使得外表不能用new产生一个实例。
private Singleton2(){}
//饿汉模式,不管你有没用这个实例,先实例化。
private static Singleton2 instance =new Singleton2();
public static Singleton2 getInstance(){
return instance;
}; }
Java的单例模式(singleton)的更多相关文章
- JAVA设计模式-单例模式(Singleton)线程安全与效率
一,前言 单例模式详细大家都已经非常熟悉了,在文章单例模式的八种写法比较中,对单例模式的概念以及使用场景都做了很不错的说明.请在阅读本文之前,阅读一下这篇文章,因为本文就是按照这篇文章中的八种单例模式 ...
- java设计模式之 单例模式 Singleton
static 的应用 单例模式 Singleton 单例:保证一个类在系统中最多只创建一个实例. 好处:由于过多创建对象实例,会产生过多的系统垃圾,需要GC频繁回收,由于GC会占用较大的系统资源,所有 ...
- 创建模式--单例模式Singleton(JAVA)
创建模式之单例模式 在面试时经常会有人问单例模式,单例模式是在整个系统运行中仅且仅有一个实例,在被调用.我们熟知的Calendar就是这种, Calendar.newIns ...
- JAVA:将反射技术应用于工厂模式(Factory)和单例模式(Singleton)的简单代码
反射技术大量用于Java设计模式和框架技术,最常见的设计模式就是工厂模式(Factory)和单例模式(Singleton). 参考URL: http://blog.csdn.net/xiaohai79 ...
- 【Java】单例模式(Singleton)
重新搞一波 复习巩固 简单记录 慕课网 Java工程师 文章目录 单例概述 设计模式 单例模式(Singleton) 参考资料 单例概述 Singleton Pattern 单例模式是Java中最简单 ...
- Java 设计模式 —— 单例模式
1. 概念: 单例模式是一种常用的软件设计模式.核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果 ...
- 设计模式之单例模式——Singleton
设计模式之单例模式--Singleton 设计意图: 保证类仅有一个实例,并且可以供应用程序全局使用.为了保证这一点,就需要这个类自己创建自己的对象,并且对外有 ...
- 【白话设计模式四】单例模式(Singleton)
转自:https://my.oschina.net/xianggao/blog/616385 0 系列目录 白话设计模式 工厂模式 单例模式 [白话设计模式一]简单工厂模式(Simple Factor ...
- ooad单例模式-Singleton
单例模式Singleton 主要作用是保证在Java应用程序中,一个类Class只有一个实例存在. 比如建立目录 ...
随机推荐
- matplotlib 做图通过弹出窗口展示 spyder
tools =>preferences=>Ipython console=>Graphics Graphics backend 中Backend 由Inline改为 Automati ...
- 普及C组第三题(8.10)
2301. [普及组T3或T4]线索 (File IO): input:assassin.in output:assassin.out 时间限制: 1000 ms 空间限制: 262144 KB 题 ...
- 洛谷 1219:八皇后 (位运算 & DFS)
题目链接: https://www.luogu.org/problem/show?pid=1219#sub row:受上面的皇后通过列控制的位置 ld:受上面的皇后通过从右至左的斜对角线控制的位置 r ...
- C语言字符串操作函数总结
转载来源:https://blog.csdn.net/qq_33757398/article/details/81212618 字符串相关操作头文件:string.h 1.strcpy函数 原型:st ...
- vue项目中解决跨域问题axios和
项目如果是用脚手架搭建的(vue cli)项目配置文件里有个proxyTable proxyTable是vue-cli搭建webpack脚手架中的一个微型代理服务器,配置如下 配置和安装axios 安 ...
- Flask 教程 第二十章:加点JavaScript魔法
本文翻译自The Flask Mega-Tutorial Part XX: Some JavaScript Magic 这是Flask Mega-Tutorial系列的第二十部分,我将添加一个功能,当 ...
- mongo的常用命令--转载
转载liyonghui的博文,出处 http://www.cnblogs.com/liyonghui/p/mongodb.html 博主写的特别好,对于我这个新手帮了大忙了,还将mongo和mysq ...
- DataGridView单元格显示密码
DataGridView单元格显示密码 private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormatt ...
- HBase 启动后HMaster进程自动消失
原因分析 1.hadoop 与 hbase 版本不兼容,导致的异常. 2.log日志信息显示 org.apache.hadoop.hbase.TableExistsException: hbase:n ...
- 1.1Jmeter学习网站
在网上找到一些关于Jmeter学习的博客等,在此标记 一. chinaunix的一篇博客,讲的蛮详细的 http://blog.chinaunix.net/uid/26884465/cid-16819 ...