1、 饿汉模式 线程安全

public class SingleInstance1 {
private static SingleInstance1 single=new SingleInstance1();
private SingleInstance1(){ }
public static SingleInstance1 getInstance(){
return single;
}
}

2、饿汉模式 线程安全

public class SingleInstance2 {
private static SingleInstance2 single=null;
static{
single=new SingleInstance2 ();
}
private SingleInstance2 (){ }
public static SingleInstance1 getInstance(){
return single;
}
}

3、懒汉模式 线程不安全

public class SingleInstance3 {
private static SingleInstance3 single =null;
private SingleInstance3 (){ }
public static SingleInstance3 getInstance(){
if(single==null){
single=new SingleInstance3 ();
}
return single;
}
}

4、 懒汉模式 线程安全 效率低下

public class SingleInstance4 {
private static SingleInstance4 single =null;
private SingleInstance4 (){ }
public static synchronized SingleInstance4 getInstance(){
if(single==null){
single=new SingleInstance4 ();
}
return single;
}
}

5、懒汉模式 线程安全 效率低下

public class SingleInstance5 {
private static SingleInstance5 single =null;
private SingleInstance5 (){ }
public static SingleInstance5 getInstance(){
synchronized(SingleInstance5 .class){
if(single==null){
single=new SingleInstance5 ();
}
}
return single;
}
}

6、懒汉模式 线程安全

public class SingleInstance6 {
private static SingleInstance6 single =null;
private SingleInstance6 (){ }
public static SingleInstance6 getInstance(){
if(single==null){
synchronized(SingleInstance6 .class){
if(single==null){
single=new SingleInstance6 ();
}
}
}
return single;
}
}

7、 懒汉模式 线程安全 效率高 静态内部类

public class SingleInstance7 {
private SingleInstance7 (){ }
public static SingleInstance7 getInstance(){
return getSingleInstance.single;
}
private static class getSingleInstance{
private static SingleInstance7 single=new SingleInstance7 ();
} }

8、 懒汉模式 线程安全 效率高 枚举

public enum SingleInstance8 {
INSTANCE;
}

Java 单例模式大乱斗的更多相关文章

  1. GridView的 PreRender事件与 RowCreated、RowDataBound事件大乱斗

    GridView的 PreRender事件与 RowCreated.RowDataBound事件大乱斗 之前写了几个范例,做了GridView的 PreRender事件与 RowCreated.Row ...

  2. python红蓝英雄大乱斗(面向对象实现)

    红蓝英雄大乱斗 游戏规则 ''' 有红蓝两方英雄(可自定义个数) 随机一方英雄使用随机攻击方式攻击另一方英雄,任意一方英雄全部阵亡则游戏结束 每个英雄有 名字.生命值.普通攻击.Q技能攻击.W技能攻击 ...

  3. Cocos Creator | 飞刀大乱斗开发教程系列(三)

    预览效果 ​ 具体内容 ■ 这一期,主要讲解游戏过程中,通过触摸滑动,控制人物的运动方向,以及游戏过程中,人物运动区域的控制.如下图,人物通过滑动控制运动方向,即是往哪个方向滑动,人物就往哪个方向移动 ...

  4. Android/Unity大乱斗-完整双方集成交互指南

    这是一个很长很长的story!-芝麻粒儿创作 开篇 源码地址:GitHub 本文目的,将Unity集成到Android端,学完本文后你可以做到 Android任意布局加载Unity 3D场景 任意操作 ...

  5. 【追寻javascript高手之路03】javascript对象大乱斗

    前言 昨天我们学习了下javascript中函数的参数与作用域的东东,现在回过头来看,其实都是与函数相关的,所以javascript中的函数仍然是王道,我们今天大概会发二篇或者三篇博客一起来巩固我们的 ...

  6. Cocos Creator | 飞刀大乱斗开发教程系列(一)

    预览效果 具体内容 ■ 这一期,主要讲解主页下方列表选项如何实现.也就是游戏开始后,加载所有现有的英雄列表,这一功能的实现,如下图部分. ■ 列表使用 ScrollView 实现,横向滚动,设置好上下 ...

  7. Cocos Creator | 飞刀大乱斗开发教程系列(二)

    预览效果 具体内容 ■ 这一期,主要讲解主页中间人物效果的实现.也就是,在下方列表选择不同人物,上方显示不同的人物,播放不同的效果,即下图的效果实现,此部分也是采用预制 Prefab 进行实现. 英雄 ...

  8. 浏览器编年史与UserAgent大乱斗

    1993 世界上第一个支持显示图片的浏览器Mosaic诞生 为了区分浏览器是否能显示图片,UserAgent诞生了,Mosaic将自己标志为NCSA_Mosaic/2.0(windows 3.1) 1 ...

  9. 【深入】java 单例模式(转)

    [深入]java 单例模式 关于单例模式的文章,其实网上早就已经泛滥了.但一个小小的单例,里面却是有着许多的变化.网上的文章大多也是提到了其中的一个或几个点,很少有比较全面且脉络清晰的文章,于是,我便 ...

随机推荐

  1. keystore password was incorrect

    一.问题由来 最近在部署后台系统项目的时候,希望给项目增加一些安全措施,在项目中添加了SSL证书,可是在自己添加完该证书后,测试启动项目立马报错. 报错信息如下: org.springframewor ...

  2. 题解 [HNOI2016]大数

    题目传送门 题目大意 给出一个\(n\)个数的字符串,有\(m\)次查询,对于该串的子串\([l,r]\)有多少个子串满足是固定素数\(p\)的倍数. 思路 其实很简单,但是一开始想偏了...果然还是 ...

  3. 试题 算法训练 最大最小公倍数 java题解

    资源限制 时间限制:1.0s   内存限制:256.0MB 问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少. 输入格式 输入一个正整数N. 输出格式 输出一个整数 ...

  4. 【UE4 C++】读写Text文件 FFileHelper

    CoreMisc.h 读取 FFileHelper::LoadFileToString 读取全部内容,存到 FString FString TextPath = FPaths::ProjectDir( ...

  5. Java集合 - 集合知识点总结概述

    集合概述 概念:对象的容器,定义了对多个对象进项操作的的常用方法.可实现数组的功能. 和数组的区别: 数组长度固定,集合长度不固定. 数组可以存储基本类型和引用类型,集合只能存储引用类型. 位置: j ...

  6. 用例图示例:使用系统边界表示多个项目 / Using System Boundary to model Multiple Projects in Use Case Diagram

    什么是用例图? 用例是一种捕获系统功能需求的技术.用例描述了一个独立于实现细节的期望行为.用例的目标是捕获用户设想的所有系统级功能.从用户的角度来看,用例是关于系统应该做什么的.用例捕获系统利益相关者 ...

  7. 痞子衡嵌入式:超级下载算法RT-UFL v1.0在Segger Ozone下的使用

    痞子衡主导的"学术"项目 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计> v1.0 版发布近 4 个月了,部分客户已经在实际项目开发调试中用上了这个 ...

  8. xiaoxiaole

    common.cpp #include "common.h" common.h #ifndef COMMON_H_INCLUDED #define COMMON_H_INCLUDE ...

  9. Java中Lambda表达式的进化之路

    Lambda表达式的进化之路 为什么要使用Lambda表达式 可以简洁代码,提高代码的可读性 可以避免匿名内部类定义过多导致逻辑紊乱 在原先实现接口抽象方法的时候,需要通过定义一个实现接口的外部类来实 ...

  10. SpringCloud微服务实战——搭建企业级开发框架(十五):集成Sentinel高可用流量管理框架【熔断降级】

      Sentinel除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一.由于调用关系的复杂性,如果调用链路中的某个资源不稳定,最终会导致请求发生堆积.Sentinel ...