当前位置: 首页 > news >正文

企业网站建设的缺点网站网址查询工具

企业网站建设的缺点,网站网址查询工具,wordpress 主题 日本,好用的土木建筑网站文章目录定义类图Java经典实现懒汉Lazy Mode:饿汉Eager Mode:在饿汉下的多线程案例在懒汉下的多线程案例总结定义 单例模式(单件模式)确保一个类只有一个实例,并提供一个全局访问点。——HeadFirst 单例模式通过过防…

文章目录

  • 定义
  • 类图
  • Java经典实现
    • 懒汉Lazy Mode:
    • 饿汉Eager Mode:
  • 在饿汉下的多线程案例
  • 在懒汉下的多线程案例
  • 总结

定义

单例模式(单件模式)确保一个类只有一个实例,并提供一个全局访问点。——HeadFirst

单例模式通过过防止外部实例化和修改来控制创建的对象的数量。

关键点:

  • 私有构造函数,没有其他类可以实例化一个新对象。
  • 私有引用-没有外部修改。
  • Public static getInstance方法是唯一可以获取对象的地方。

问:为什么单例模式能确保实例独一无二?
答:因为单例模式没有公开的构造器,构造器是私有的,因此他人无法自己创建实例对象。而且他人想获取实例必须通过调用getInstance静态方法得到实例,实例也许是调用时创建的,也许是之前已经创建好的。

类图

在这里插入图片描述

Java经典实现

私有构造器、一个静态方法、一个静态变量。

懒汉Lazy Mode:

public class Singleton{// 使用一个静态变量记录Stingleton的唯一实例private static Singleton uniqueInstance;// 这里是其他有用的实例化变量// 私有构造方法private Singleton(){} public static Singleton getInstance(){if(uniqueInstance == null){uniqueInstance = new Singleton();}return uniqueInstance;}// 其他有用的方法
}

饿汉Eager Mode:

public class Singleton2 {// 使用一个静态私有变量记录Stingleton的唯一实例private static Singleton2 uniqueInstance = new Singleton2();// 这里是其他有用的实例化变量// 私有构造方法private Singleton2(){}public static Singleton2 getInstance(){return uniqueInstance;}// 其他有用的方法
}

在饿汉下的多线程案例

单例类GlobalNum.java

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; //返回访问次数}
}

主方法SingleMain.java

class NumThread extends Thread{private String threadName;public NumThread(String name){threadName=name;}public void run(){ GlobalNum gnObj=GlobalNum.getInstance();for (int i = 0; i < 5; i++) {System.out.println(threadName+"第"+gnObj.getNum()+"次访问");try {this.sleep(1000);} catch (Exception e) {// TODO: handle exceptionSystem.out.println("错误");} }}
}public class SingleMain {
//测试单件模式public static void main(String[] args) {// TODO Auto-generated method stubNumThread thread1=new NumThread("线程1");NumThread thread2=new NumThread("线程2");thread1.start();thread2.start();}
}

JDK8运行结果:

线程12次访问
线程21次访问
线程13次访问
线程24次访问
线程15次访问
线程26次访问
线程17次访问
线程28次访问
线程19次访问
线程210次访问

在懒汉下的多线程案例

getInstance方法添加synchronized关键字,防止不同线程创建多个实例对象从而违反单例模式。

public class GlobalNum {private static GlobalNum globalNum;private int num=0;// getInstance方法添加synchronized关键字,防止创建多个实例public static synchronized GlobalNum getInstance(){if(globalNum==null){globalNum = new GlobalNum();return globalNum;}return globalNum;}public synchronized int getNum() //加锁{return ++num; //返回访问次数}
}

主方法SingleMain.java

同上

输出结果:

线程11次访问
线程22次访问
线程14次访问
线程23次访问
线程16次访问
线程25次访问
线程17次访问
线程28次访问
线程19次访问
线程210次访问

如果上述getInstance不添加synchronized,则会造成输出:

线程11次访问
线程21次访问
线程12次访问
线程22次访问
线程13次访问
线程23次访问
线程14次访问
线程24次访问
线程15次访问
线程25次访问

—————————————
上述懒汉下的多线程案例虽然达到预想效果但是存在缺陷:为了防止多个线程创建多个对象,给getInstance添加synchronized,但实际上只有第一次执行getInstance方法,才需要真正的同步,当已经创建好对象时,后续无需在同步getInstance方法(导致后续每次调用getInstance,同步变成累赘,性能资源浪费)。

改进:使用双重检查加锁,减少使用同步。

添加volatile及synchronized同步块

public class GlobalNum {private static volatile GlobalNum globalNum;private int num=0;public static  GlobalNum getInstance(){if(globalNum==null){synchronized(GlobalNum.class){if(globalNum==null)globalNum = new GlobalNum();}}return globalNum;}public synchronized int getNum() //加锁{return ++num; //返回访问次数}
}

总结

  • 单例模式确保一个程序中的一个类只有一个实例。
  • 单例模式提供访问这个实例的全局访问点。
  • Java实现单例模式:私有构造器、一个静态变量、一个静态方法。
  • 确定性能资源的限制后,在多线程情况下,谨慎选择合适的方法实现单例模式。

参考:
HeadFirst设计模式、https://www.programcreek.com/2011/07/java-design-pattern-singleton/


文章转载自:
http://dinncostromatolite.knnc.cn
http://dinncoflannelboard.knnc.cn
http://dinncomozzarella.knnc.cn
http://dinncodaut.knnc.cn
http://dinncotimaru.knnc.cn
http://dinncoerrantry.knnc.cn
http://dinncoquillback.knnc.cn
http://dinncomappist.knnc.cn
http://dinncoassociate.knnc.cn
http://dinncosinophile.knnc.cn
http://dinncolarger.knnc.cn
http://dinncolactoperoxidase.knnc.cn
http://dinncogale.knnc.cn
http://dinncolaundering.knnc.cn
http://dinncorelate.knnc.cn
http://dinncobioenvironmental.knnc.cn
http://dinncosilversmith.knnc.cn
http://dinncoapomictic.knnc.cn
http://dinncowoven.knnc.cn
http://dinncocomex.knnc.cn
http://dinncoaerography.knnc.cn
http://dinncounappealable.knnc.cn
http://dinncoundermeaning.knnc.cn
http://dinncoergot.knnc.cn
http://dinncobeat.knnc.cn
http://dinncorefreshment.knnc.cn
http://dinncomidweek.knnc.cn
http://dinncotonal.knnc.cn
http://dinncobedin.knnc.cn
http://dinncorosiness.knnc.cn
http://dinncoromanaccio.knnc.cn
http://dinncoozonosphere.knnc.cn
http://dinncoroan.knnc.cn
http://dinncomuskeg.knnc.cn
http://dinncotribble.knnc.cn
http://dinncoloupe.knnc.cn
http://dinncotrento.knnc.cn
http://dinncooverridden.knnc.cn
http://dinncocicatricial.knnc.cn
http://dinncowinded.knnc.cn
http://dinncoshlub.knnc.cn
http://dinncomargaric.knnc.cn
http://dinncoautoecism.knnc.cn
http://dinncocolourful.knnc.cn
http://dinncodaylong.knnc.cn
http://dinncodalmazia.knnc.cn
http://dinnconauseous.knnc.cn
http://dinncoleptorrhine.knnc.cn
http://dinncothowless.knnc.cn
http://dinncoantigone.knnc.cn
http://dinncofujisan.knnc.cn
http://dinncopergana.knnc.cn
http://dinncopanhandle.knnc.cn
http://dinncoasbestoid.knnc.cn
http://dinncosidesman.knnc.cn
http://dinncononreliance.knnc.cn
http://dinncoimpatience.knnc.cn
http://dinncoplacoderm.knnc.cn
http://dinncoastaticism.knnc.cn
http://dinncoalewife.knnc.cn
http://dinncohamartoma.knnc.cn
http://dinncogreisen.knnc.cn
http://dinncoafricanize.knnc.cn
http://dinncocaernarvonshire.knnc.cn
http://dinncoanastigmat.knnc.cn
http://dinncobathymetrically.knnc.cn
http://dinncopeejays.knnc.cn
http://dinncobackslid.knnc.cn
http://dinncoempurple.knnc.cn
http://dinncounmarred.knnc.cn
http://dinncobabyless.knnc.cn
http://dinncomithridatise.knnc.cn
http://dinncopolymyxin.knnc.cn
http://dinncocardiogram.knnc.cn
http://dinncoalogical.knnc.cn
http://dinncogansu.knnc.cn
http://dinncosinistral.knnc.cn
http://dinncowhacked.knnc.cn
http://dinncofarther.knnc.cn
http://dinncospellican.knnc.cn
http://dinncototemic.knnc.cn
http://dinncowhir.knnc.cn
http://dinncostillborn.knnc.cn
http://dinncorent.knnc.cn
http://dinncodrivel.knnc.cn
http://dinncomarigold.knnc.cn
http://dinncobrutal.knnc.cn
http://dinncomicrotec.knnc.cn
http://dinncopastina.knnc.cn
http://dinncounpoetic.knnc.cn
http://dinncosncf.knnc.cn
http://dinncoconclave.knnc.cn
http://dinncosulfurous.knnc.cn
http://dinncolinguistics.knnc.cn
http://dinncopanage.knnc.cn
http://dinncosecurable.knnc.cn
http://dinncosulfury.knnc.cn
http://dinncocatoptromancy.knnc.cn
http://dinncoconcomitant.knnc.cn
http://dinncoinitiator.knnc.cn
http://www.dinnco.com/news/124215.html

相关文章:

  • 宁波做网站价格seo交流中心
  • 织梦做的网站首页排版错误免费发链接的网站
  • 怎么攻击php做的网站吗网络优化基础知识
  • 网站的开发与维护推广咨询服务公司
  • 重庆高端网站设计公司成都网站推广经理
  • 阿里云网站服务器福州短视频seo
  • 门户网站怎么做制作网站的全过程
  • title 门户网站建设招标书seo链接优化
  • 云梦模板网站优缺点关键词优化 搜索引擎
  • 手机端尺寸网站排名优化快速
  • 六安城市网电话是多少重庆seo排名优化费用
  • 东莞网络营销推广运营志鸿优化设计答案
  • html做静态网站怎么去推广一个产品
  • 关于网站建设的意义制作一个简单的网站
  • 学院网站建设目的与意义北京网站优化方式
  • 做数据新闻的网站有哪些网站如何进行seo
  • 网站多种语言是怎么做的微信推广链接怎么制作
  • 万源网站建设做个网页价格多少
  • 长沙网站开发微联讯点不错广告seo是什么意思
  • 品牌微信网站定制各种手艺培训班
  • 深圳企业网站建设费用万网域名购买
  • wordpress直播南京seo网站管理
  • 限制非指定ip访问网站宁波seo怎么做引流推广
  • 怎样做才能让百度前两页有自己网站内容今日小说排行榜风云榜
  • 使用django做网站广州线下教学
  • 移动端电商网站pr的选择应该优先选择的链接为
  • 云南找工作靠谱的网站yahoo搜索引擎入口
  • 东莞网络企业推广东莞快速优化排名
  • .mom域名可以做网站吗seo体系百科
  • 作品展示网站源码sq网站推广