java中的d单例模式
public class SimpleDemo1 {
//恶汉式
//类初始化时,立即加载这个对象(没有延时加载的优势)。加载类时,天然的是线程安全的
private static final SimpleDemo1 instance = new SimpleDemo1();
private SimpleDemo1(){
}
//方法不用同步,调用效率高
public static SimpleDemo1 getInstance(){
return instance;
}
}
public class SimpleDemo2 {
//懒汉式
//类初始化时,不初始化这个对象(延时加载,真正用的时候再创建)
private static SimpleDemo2 instance ;
private SimpleDemo2(){
}
//方法同步,调用效率低!
public synchronized static SimpleDemo2 getInstance(){
if(null == instance){
instance = new SimpleDemo2();
}
return instance;
}
}
public class SimpleDemo3 {
//静态内部类的方式
//这种方式:线程安全,调用效率高,并且实现了延时加载!
private static class SingleClassInstance{
private static final SimpleDemo3 instance = new SimpleDemo3();
}
//方法没有同步,调用效率高
public static SimpleDemo3 getInstance(){
return SingleClassInstance.instance;
}
private SimpleDemo3(){
}
}
public enum SimpleDemo4 {
//枚举方式
INSTANCE;
public void instanceOpration(){
System.out.println("hah");
}
}
public class Test {
/*
* 测试单例模式
*/
public static void main(String[] args){
SimpleDemo1 s1 = SimpleDemo1.getInstance();
SimpleDemo1 s2 = SimpleDemo1.getInstance();
System.out.println(s1);
System.out.println(s2);
SimpleDemo2 s3 = SimpleDemo2.getInstance();
SimpleDemo2 s4 = SimpleDemo2.getInstance();
System.out.println(s3);
System.out.println(s4);
SimpleDemo3 s5 = SimpleDemo3.getInstance();
SimpleDemo3 s6 = SimpleDemo3.getInstance();
System.out.println(s5);
System.out.println(s6);
SimpleDemo4 s7 = SimpleDemo4.INSTANCE;
SimpleDemo4 s8 = SimpleDemo4.INSTANCE;
System.out.println(s7);
System.out.println(s8);
SimpleDemo4.INSTANCE.instanceOpration();
}
}
java中的d单例模式的更多相关文章
- java中全面的单例模式多种实现方式总结
单例模式的思想 想整理一些 java 并发相关的知识,不知道从哪开始,想起了单例模式中要考虑的线程安全,就从单例模式开始吧. 以前写过单例模式,这里再重新汇总补充整理一下,单例模式的多种实现. 单例模 ...
- java中常见的单例模式详解
很多求职者在面试过程中都被问到了单例模式,最常见的问题,比如,每种单例模式的区别是什么?哪些模式是线程安全的?你们项目里用的哪种单例模式?原来没有注意这个问题,回来赶紧打开项目查看了一下代码,才发现我 ...
- 7.JAVA基础复习——JAVA中的设计模式单例模式
设计模式:是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 总体来说设计模式分为23种三大类: 创建型模式,共 ...
- java中两种单例模式
//懒汉式(线程不安全) class LazySingleton{ private static LazySingleton singleton; private LazySingleton(){} ...
- Java中的GOF23(23中设计模式)--------- 单例模式(Singleton)
Java中的GOF23(23中设计模式)--------- 单例模式(Singleton) 在Java这这门语言里面,它的优点在于它本身的可移植性上面,而要做到可移植的话,本身就需要一个中介作为翻译工 ...
- JAVA中单例模式的几种实现方式
1 线程不安全的实现方法 首先介绍java中最基本的单例模式实现方式,我们可以在一些初级的java书中看到.这种实现方法不是线程安全的,所以在项目实践中如果涉及到线程安全就不会使用这种方式.但是如果不 ...
- 1、c#中可以有静态构造方法,而java中没有,例如在单例模式中c#可以直接在静态构造中实例化对象,而java不可以
1.c#中可以有静态构造方法,而java中没有,例如在单例模式中c#可以直接在静态构造中实例化对象,而java不可以
- java中的单例模式与doublecheck
转自: http://devbean.blog.51cto.com/448512/203501 在GoF的23种设计模式中,单例模式是比较简单的一种.然而,有时候越是简单的东西越容易出现问题.下面就单 ...
- Java基础知识强化13:Java中单例模式案例使用(懒汉式)
1.古往今来历史上皇帝通常只有一人.为了保证其唯一性,古人采用增加"防伪标识"的办法,如玉玺.更为简单的办法就是限制皇帝的创建.本案例中就是使用单例模式从而保证皇帝的唯一性.实例运 ...
随机推荐
- [转]How to compile GDB for iOS!
ref:http://reverse.put.as/2012/04/16/how-to-compile-gdb-for-ios/ source code: http://www.opensource. ...
- [google面试CTCI] 1-5.替换字符串中特定字符
[字符串与数组] Q:Write a method to replace all spaces in a string with ‘%20’ 题目:写一个算法将一个字符串中的空格替换成%20 解答: ...
- 分析Sizzle引擎
jQuery 2.0.3 源码分析Sizzle引擎 - 打造高效查询 为什么Sizzle很高效? 首先,从处理流程上理解,它总是先使用最高效的原生方法来做处理 HTML文档一共有这么四个API: ge ...
- java中除去字符串(String)中的换行字符(\r \n)
有时在文本框中输入内容特别是粘贴内容时会出现一些换行符(\r\n),如下,在做字数验证或保存到数据库中时应过滤掉. str.replaceAll("\r|\n","&qu ...
- Javascript单元测试框架比较Qunit VS Jasmine
Javascript单元测试框架比较Qunit VS Jasmine 工欲行其事必先利其器,好的单元测试框架是TDD成功的一半.Javascript优秀的测试框架很多, 包括Jasmine,Qunit ...
- MacOSX 下.app支持同时运行多个实例
在MacOSX下的.app是一个程序包(实际上是个目录),双击该目录时系统会根据包的目录结构启动相应的可执行程序..app的程序默认是单实例运行的,所以从.app启动的程序实例只有一个(可执行程序不受 ...
- 欢迎关注我的微信公众账号:Linux技巧(微信号:irefactoring),一起学习Linux知识~~~
最近很少写博客了,一方面是近期工作比较繁忙,第二是把精力都放在GitHub和读源码去了. 申请了一个微信公众账号:Linux技巧 微信ID:irefactoring(意思是爱重构) ========= ...
- linux下安装PHP5.5
下载安装包后,在安装php之前必须先安装libxml2,因此可以通过下载libxml2安装包,编译安装 我通过yum -y install libxml2 libxml2-devel(不安装这个的话, ...
- Cocos2d-x--Box2D使用GLES-Render.h渲染查看刚体
分为两部分:文件拷贝和代码实现 1.文件拷贝: 在TestCpp下找到GLES-Render.h和GLES-Render.cpp两个文件 复制到G:\cocos2d-2.1rc0-x-2.1.3\co ...
- Spring MVC---数据绑定和表单标签
数据绑定和表单标签 数据绑定 数据绑定是将用户输入绑定到领域模型的一种特性,在Spring MVC的controller和view数据传递 ...