毕向东讲解(摘)—9.单例设计模式的回顾
来源:互联网 发布:矩阵乘法mm 编辑:程序博客网 时间:2024/06/06 01:20
懒汉式相比于饿汉式的优点就是延迟加载,但是如果在多线程中的话,懒汉式容易出问题,如果要考虑多线程的安全性,并且稍微提高一下懒汉式的速率,最好的办法就是使用双重判断的方式,不过即使懒汉式在多线程中可以使用双重判断来解决,然而也不如饿汉式在多线程中的优势,所以一般在多线程中我们选用饿汉式进行单例。
package day6;
/**
* 单例设计模式
*
* @authormzy
*
*/
publicclassTest3{}
/**
* 饿汉式
*
*/
classSingle{
privatestaticfinalSingles=newSingle();
privateSingle(){}
publicstaticSinglegetInstance(){
returns;
}
}
/**
* 懒汉式
* 最开始我们学习的懒汉式写法如下,但是这里的懒汉式并未考虑多线程的问题
*/
classSingleDemo{
privatestaticSingleDemos=null;
privateSingleDemo(){}
publicstaticSingleDemogetInstance(){
if(s==null)
s=newSingleDemo();
returns;
}
}
/**
* 经过改良的懒汉式
* 加上synchronized修饰
*
* 但是同时可以看出,第一次改进的懒汉式效率很低下
* 因为每次进入都要事先进行一次是否为空的判断
*/
classSingleDemo1{
privatestaticSingleDemo1s=null;
privateSingleDemo1(){}
publicstaticsynchronizedSingleDemo1getInstance(){
if(s==null)
s=newSingleDemo1();
returns;
}
}
/**
* 最终改良的懒汉式
*
* @authormzy
*
*/
classSingleDemoLast{
privatestaticSingleDemoLasts=null;
privateSingleDemoLast(){}
publicstaticsynchronizedSingleDemoLastgetInstance(){
if(s==null){
synchronized(SingleDemoLast.class){
if(s==null)
s=newSingleDemoLast();
}
}
returns;
}
}
- 毕向东讲解(摘)—9.单例设计模式的回顾
- java毕向东听课笔记6(单例设计模式)
- 多线程三,同步函数、静态同步函数和单例设计模式中懒汉式即延迟加载模式的多线程问题(毕向东老师)
- 毕向东讲解(摘)—10.多线程(死锁)
- 毕向东讲解(摘)—1.多线程概述
- 毕向东讲解(摘)—线程售票重复bug
- 毕向东讲解(摘)—8.静态同步函数
- 单例设计模式讲解
- 毕向东讲解(摘)—7.多线程安全问题(同步函数的锁this验证)
- 毕向东讲解(摘)—5.多线程的安全问题(同步代码块)
- java零基础知识回顾(单例设计模式)
- 设计模式之单例模式讲解
- 设计模式之单例模式讲解
- iOS单例设计模式详细讲解(单例设计模式不断完善的过程)
- 单例模式的讲解(singleton)
- C#设计模式(1)——单例模式(讲解非常清楚)
- 单例模式 回顾
- 毕向东讲解(摘)—6.多线程安全问题(同步函数)
- Sping Cloud Eureka 报错
- 论文阅读理解
- 2017年10月12日笔记
- leetcode-longest palindromic substring
- redis的持久化
- 毕向东讲解(摘)—9.单例设计模式的回顾
- 利用反射获取实体类中的私有属性
- 最大似然估计(MLE)和最大后验概率(MAP)
- 运维试题
- Java反射TypeToken解决泛型运行时类型擦除问题
- 关于JMeter的CSV Data Set Config的源码改写(包括了部分界面等代码的分析)
- Spring学习-装配Bean
- python绘图-坐标轴不可见
- Android apk编译/反编译工具baksmali和smali用法