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

网站开发app开发怎样在网上做推广

网站开发app开发,怎样在网上做推广,贵州专业网站建设费用,中山市网站建设公司一.什么是单例模式? 在 Java 里,单例模式指的是一个类仅有一个实例,并且提供一个全局访问点(公有get方法)来获取该实例。在多线程环境下实现单例模式时,需要保证线程安全,避免多个线程同时创建多…

一.什么是单例模式?

在 Java 里,单例模式指的是一个类仅有一个实例,并且提供一个全局访问点(公有get方法)来获取该实例。在多线程环境下实现单例模式时,需要保证线程安全,避免多个线程同时创建多个实例。下面介绍几种常见的多线程单例模式实现方式

 二.饿汉式

在类加载时就创建了实例 

1.代码示例

class Singleton {//在类加载时直接创建实例//static 修饰引用变量,意味着这个变量属于类,而不是实例//确保类只有一个实例。这里用 static 让 instance 属于类,只有一份。private static Singleton instance = new Singleton();//提供公有的get方法来让外部获取唯一实例public static Singleton getInstance() {return instance;}// 把构造方法设为 private。此时在类的外面,就无法继续 new 实例了.private Singleton() {}
}class Demo20 {public static void main(String[] args) {// 如果代码这么写,就违背初衷,就应该禁止这个类在类外部被 new.// Singleton instance2 = new Singleton();Singleton instance = Singleton.getInstance();}
}

2.以上代码是线程安全的——为什么?

public static Singleton getInstance() {return instance;}

因为上述代码中这段操作只涉及到“读取数据”,不涉及到修改

 三.懒汉式

不是在类加载时就创建了实例 

先来看一段代码

1.代码示例

class SingletonLazy {private static SingletonLazy instance = null;public static SingletonLazy getInstance() {if (instance == null) {instance = new SingletonLazy();}return instance;}// 把构造方法设为 private。此时在类外部,就无法继续 new 实例了.private SingletonLazy() {}
}class Demo2 {public static void main(String[] args) {SingletonLazy instance = SingletonLazy.getInstance();SingletonLazy instance2 = SingletonLazy.getInstance();}
}

 2.解释

 这种方式在首次调用getInstance( )的时候才会创建实例,后续再调用getInstance( ),则直接返回实例(不new)。

3.但在多线程环境下不安全--为什么?

 if (instance == null) {instance = new SingletonLazy();}return instance;

在上述代码中这段操作既涉及到了读取,也涉及到了修改(将SingletonLazy对象赋值给引用变量instance)

假设有两个线程 t1,t2 进行下方操作

SingletonLazy instance = SingletonLazy.getInstance();

导致实例被创建出多份

4.如何修改?

加锁

4.1 synchronized修饰此段代码块

class SingletonLazy {private static SingletonLazy instance = null;public static SingletonLazy getInstance() {//这里synchronized (Singleton.class){if(instance == null) {instance = new SingletonLazy();}}return instance;}private SingletonLazy() {}
}

4.2 synchronized修饰getInstance( )方法

class SingletonLazy {private static SingletonLazy instance = null;//这里public static synchronized SingletonLazy getInstance() {if(instance == null) {instance = new SingletonLazy();}return instance;}private SingletonLazy() {}
}

 5.有个小的新问题

线程不安全并不是一直都不安全。只是在多线程(多个线程)环境下,首轮调用getInstance(  )方法才会不安全。一旦实例创建好,多个线程同时调用getInstance( )方法也并不会触发线程不安全问题。

总:会带来一定的性能开销

6.如何解决?

怎样既保持线程安全,也减少同步带来的性能开销

6.1 解决方法

双重检查锁定


public static SingletonLazy getInstance() {//加上判定条件if (instance==null){//在此处加锁synchronized (Singleton.class){if(instance == null) {instance = new SingletonLazy();}}}return instance;
}

6.2 新问题 (这里可以不看)

 

6.2.1 解决方法(这里看)

 使用 volatile 关键字保证可见性

 private static volatile SingletonLazy instance = null;

 

http://www.dtcms.com/wzjs/15174.html

相关文章:

  • 你注册过哪些网站深圳seo
  • 宝安网站建设公司百度客服人工电话24
  • 遵义公司做网站武汉seo网站推广
  • 陕西省城乡住房和建设厅网站谷歌收录提交入口
  • 淘宝优惠券返利网站怎么做网络广告营销典型案例
  • 微网站好制作吗免费网站建设哪个好
  • 省政府网站管理与建设方案百度账号中心官网
  • 室内设计网站大全免费seo公司优化排名
  • 手机做公司网站电商网站上信息资源的特点包括
  • web网站开发的流程图百度搜索推广方法
  • 百度上面做企业网站怎么做补肾壮阳吃什么药效果好
  • 济南外贸网站建设摘抄一小段新闻
  • 苏州做网站建设网络推广方案七步法
  • 网站备案需要多久软文推广文章案例
  • 怎么做影视网站推广产品的软文
  • 住房和城乡建设部网站规范答疑百度关键词投放
  • 无锡网站建设专家无锡网站制作搜索引擎广告投放
  • 设计网站都有什么唐山百度提升优化
  • 客服工作台哈尔滨seo优化公司
  • 代码网站有哪些关键词优化排名软件案例
  • 北海哪里做网站建设厦门网站关键词推广
  • 广州市平安建设 网站郑州网站seo公司
  • 微信客户端网站建设百度一下百度搜索官网
  • 做一网站要什么互联网运营主要做什么
  • 网站自适应怎么做怎么把自己的产品推广出去
  • 江苏城乡与住房建设部网站上海牛巨仁seo
  • 做销售的去哪个网站应聘seo服务外包费用
  • 怎样介绍自己做的网站厦门seo排名
  • 成都网站制作和建设国内最新十大新闻
  • 中国建设教育协会网站网站推广方案策划