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

网站开发的目的实习报告如何网络推广新产品

网站开发的目的实习报告,如何网络推广新产品,发展历程 网站建设,银川网站建设哪家价格低volatile原理 volatile的底层实现原理是内存屏障,Memory Barrier(Memory Fence) 对volatile变量的写指令后会加入写屏障 对volatile变量的读指令前会加入读屏障 如何保证可见性 写屏障保证在该屏障之前的,对共享变量的改动,都同步到主存当中 public void actor2(I_Resu…

volatile原理

volatile的底层实现原理是内存屏障,Memory Barrier(Memory Fence)

· 对volatile变量的写指令后会加入写屏障

· 对volatile变量的读指令前会加入读屏障

如何保证可见性

写屏障保证在该屏障之前的,对共享变量的改动,都同步到主存当中

public void actor2(I_Result r){num = 2;ready = true;// ready 是volatile 赋值带写屏障//写屏障
}

而读屏障保证在该屏障之后,对共享变量的读取,加载的是主存中最新数据

public void actor1(I_Result r){//读屏障//ready 是 volatile 读取值带读屏障if(ready){r.r1 = num + num;}else{r.r1 = 1;}
}

在这里插入图片描述

如何保证有序性

写屏障会确保指令重排序时,不会将写屏障之前的代码排在写屏障之后

public void actor2(I_Result r){num = 2;ready = true;// ready 是volatile 赋值带写屏障//写屏障
}

读屏障会确保指令重排序时,不会将读屏障之后的代码排在读屏障之前

public void actor1(I_Result r){//读屏障//ready 是 volatile 读取值带读屏障if(ready){r.r1 = num + num;}else{r.r1 = 1;}
}

写屏障仅仅是保证之后的读能够读到最新结果,但不能保证读跑到它前面去

而有序性的保证也只能保证了本线程内相关代码不被重排序

double-checked locking 问题

以著名的double-checked locking 单例模式为例

public final class Singleton{private Singleton(){}private static Singleton INSTANCE = null;public static Singleton getInstance(){// 首次访问会同步,而之后的使用没有synchronizedif(INSTANCE == null){synchronized(Singleton.class){if(INSTANCE == null){INSTANCE = new Singleton();}}}    return INSTANCE;}
}

以上的实现特点是:

懒惰实例化

首次使用getInstance()才会调用synchronized加锁,后续使用时无需加锁

有隐含的,但很关键的一点:第一个if使用了INSTANCE变量,是在同步块之外

但是在多线程环境下,上面的代码是有问题的,getInstance方法对应的字节码为:

在这里插入图片描述

其中

· 17 表示创建对象,将对象引用入栈 //new Singleton

· 20 表示复制一份对象引用 //引用地址

· 21 表示利用一个对象引用,调用构造方法 //引用地址调用

· 24 表示利用一个对象引用,赋值给static INSTANCE

也许jvm会优化为: 先执行24,再执行21。如果这两个线程t1,t2按如下时间序列执行:

在这里插入图片描述

synchronized只能保证代码块内部的原子性,可见性,有序性,但是INSTANCE并不是都在synchronized内部所以出现了指令重排的问题

double-checked locking 解决

public final class Singleton{private Singleton(){}private static volatile Singleton INSTANCE = null;public static Singleton getInstance(){// 首次访问会同步,而之后的使用没有synchronizedif(INSTANCE == null){synchronized(Singleton.class){if(INSTANCE == null){INSTANCE = new Singleton();}}}    return INSTANCE;}
}

在这里插入图片描述

在这里插入图片描述

http://www.hrbkazy.com/news/11596.html

相关文章:

  • 怎么样搭建qq号网站吸引人的营销标题
  • 做照片用的视频模板下载网站网络推广有哪些途径
  • 绵阳做网站谷歌外链
  • 重庆 建网站百度电话客服24小时人工服务热线
  • 如何在社交网站上做视频推广乐陵seo优化
  • 网站开发者模式下怎么保存图片百度竞价推广的技巧
  • wordpress中文免费模板合肥建站公司seo
  • 公司网站 域名 申请 空间域名注册平台
  • Wordpress 收费优化厦门seo公司
  • win2003做网站网络营销推广活动有哪些
  • java购物网站开发教学视频免费关键词挖掘工具
  • wordpress镜像配置引擎优化
  • 怎么用电脑做网站服务器百度账号登录中心
  • 怎么样建设网站赚钱网站制作app
  • 中文网站后台培训网登录入口
  • ae如何做视频模板下载网站临沂百度联系方式
  • 网站图片处理方案soso搜索引擎
  • 南京网页制作培训seo知识培训
  • 海南网站公司百度热议排名软件
  • iis7 网站404错误信息互联网最赚钱的行业
  • 哪个公司可以专门做网站酒店线上推广方案有哪些
  • 公司请外包做的网站怎么维护全媒体运营师培训
  • wordpress网站设计作业网络公司品牌推广
  • logosc网站怎么做的中国广告公司前十强
  • 网站内容模板seo推广经验
  • 广州建设网站公司品牌营销策略
  • 另外网站是做的IPv4还是IPv6关键字有哪些
  • 做网站都需要什么百度指数app官方下载
  • 智能建网站软件四川seo整站优化吧
  • 邵阳网站建设公司2021年中国关键词