DesignPattern_Java:SingletonPattern
单例模式 SingletonPattern
Ensure a class has only one instance,and provide a global point of access to it.
单例模式的主要作用是确保一个类仅仅有一个实例存在。
懒汉式单例类:第一次引用类时,才进行对象实例化。
package com.DesignPattern.Creational.Singleton;
public class Singleton_lHan {
private static Singleton_lHan _instance = null;
private Singleton_lHan() {
}
synchronized public static Singleton_lHan getInstance() {
if (_instance == null) {
_instance = new Singleton_lHan();
}
return _instance;
}
}
饿汉式单例类:类载入时,就进行对象实例化。
package com.DesignPattern.Creational.Singleton;
public class Singleton_eHan {
private static Singleton_eHan m_instance = new Singleton_eHan();
private Singleton_eHan() {
}
public static Singleton_eHan getInstance() {
return m_instance;
}
}
单例模式的实例
创建一个饿汉式单例类:GlobalNum.java
package com.DesignPattern.Creational.Singleton;
public class GlobalNum {
private static GlobalNum gn = new GlobalNum();
private int num = 0;
public static GlobalNum getInstance() {
return gn;
}
public synchronized int getNum() {
return ++num;
}
}
SingleDemo.java
package com.DesignPattern.Creational.Singleton;
public class SingleDemo {
//測试单例模式
public static void main(String[] args) {
//创建线程A
NumThread threadA = new NumThread("thread A");
//创建线程B
NumThread threadB = new NumThread("thread B");
//启动线程
threadA.start();
threadB.start();
}
}
//线程类
class NumThread extends Thread {
private String threadName;
public NumThread(String name) {
threadName = name;
}
//重写线程的run方法(线程任务)
public void run() {
GlobalNum gnObj = GlobalNum.getInstance();
//循环訪问,输出訪问次数
for (int i = 0; i < 5; i++) {
System.out.println(threadName + "第" + gnObj.getNum() + "次訪问!");
try {
this.sleep(1000); //线程休眠1000毫秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
DesignPattern_Java:SingletonPattern的更多相关文章
- SingletonPattern(23种设计模式之一)
设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒置原则 设计模式六大原则(4):接口隔离原则 设计模式六大原则(5):迪米特法则 设计模式六大 ...
- 单例模式(Singleton-Pattern)百媚生
1 动机 对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号 ...
- DesignPattern_Java:Factory Method Pattern
工厂方法模式 Factory Method :(虚拟构造函数模式 Virtual Constructor,多态性工厂模式 Ploymorphic Facoty) Define an interface ...
- SingletonPattern(单例模式)-----Java/.Net
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一. 这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 这种模式涉及到一个单一的类,该类负责创建自己的 ...
- 创建型-单例模式 SingletonPattern
单例模式 Singleton 保证一个类只有一个实例的实现方法 给其他类提供一个全局的访问点. 由自己创建自己的唯一实例 实现 实现方法分为饿汉式(线程安全).懒汉式(线程不安全).懒汉式(lock+ ...
- [zt]Singleton和Double-Checked Locking设计模式—UML图及代码实现
Singleton和Double-Checked Locking设计模式,分别指的是单例模式和双重检查锁模式,它们都可以用于确保某个类只有一个对象实例化. 两个模式的区别在于:Singleton模式用 ...
- 深入浅出设计模式——单例模式(Singleton Pattern)
模式动机对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务:一个系统只能有一个窗口管理器或文件系统:一个系统只能有一个计时工具或ID(序号) ...
- C#设计模式——单件模式
一.为何需要单件模式 需求 我们开发了一个大型的项目,其中存在许多的工具类.但是其中很多的工具类我们并不是经常使用得到,甚至 一次都不会使用.但是这些工具类都是静态的类,会消耗很多的内存,即使一次都不 ...
- 设计模式之美:Singleton(单件)
索引 意图 结构 参与者 适用性 缺点 效果 相关模式 实现 实现方式(一):使用 Static 变量初始化 Singleton. 实现方式(二):使用 Lazy Initialization 来实现 ...
随机推荐
- Spring3拦截引发的问题——WEB开发中的client路径
什么是client路径? 第一类.也就是html或js文件等client訪问的文件里的路径,这里包含一些资源文件的引入(js.css还有各种图片等),或是跳转到静态html页面,总之获取的都是静态资源 ...
- C# 报表
报表技术 1.OWC控件的使用 OWC是office web Components 是组件对象模型(COM)控件的集合,可用于将电子表格,图表和数据库发布到网站上. 在Office2003以后的版本中 ...
- 软件——python,主函数
1;; 如何在spyder中运行python程序 如下图, 写入一个输出 ' hellow word '的程序 然后点击运行按钮就可以运行了.
- JS实现跑马灯效果(鼠标滑入可暂停,离开继续跑)
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 【】minimum
[链接]h在这里写链接 [题意] 给两个数字a,b,每次操作可以把a+1a+1,或把a∗k 问至少多少次操作可以使得a=b. 1<=a,b<=10^18,0 <= k <= 1 ...
- TOMCAT8009端口与AJP13协议
Tomcat最主要的功能是提供Servlet/JSP容器,尽管它也可以作为独立的Java Web服务器,它在对静态资源(如HTML文件或图像文件)的处理速度,以及提供的Web服务器管理功能方面都不如其 ...
- C#调用oracle存储过程自定义表类型
http://blog.csdn.net/studyzy/article/details/11524527
- spark源码解析之基本概念
从两方面来阐述spark的组件,一个是宏观上,一个是微观上. 1. spark组件 要分析spark的源码,首先要了解spark是如何工作的.spark的组件: 了解其工作过程先要了解基本概念 官方罗 ...
- IE block my cookie in iframe
---恢复内容开始--- There is a severe bug that a leader figured it out in a published project. In IE11, the ...
- 4、qq物联SDK介绍及实例讲解
1.到QQ物联官网http://iot.open.qq.com中下载软件SDK S3C2440_20161122_1.6.205_r4288.tar.gz注意:在后续大家实际开发过程中,可能你会下载到 ...