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

网站建设 事项怎么做盲盒

网站建设 事项,怎么做盲盒,获取网站全站代码,杭州网站建设方案推广目录1. 如何解决重排序带来的问题2. happens-before1. 如何解决重排序带来的问题 对于编译器,JMM 的编译器重排序规则会禁止特定类型的编译器重排序。对于处理器重排序,JMM 的处理器重排序规则会要求编译器在生成指令序列时,插入特定类型的内…

目录

  • 1. 如何解决重排序带来的问题
  • 2. happens-before

1. 如何解决重排序带来的问题

对于编译器,JMM 的编译器重排序规则会禁止特定类型的编译器重排序。对于处理器重排序,JMM 的处理器重排序规则会要求编译器在生成指令序列时,插入特定类型的内存屏障(Memory Barries / Memory Fence)指令,通过内存屏障指令来禁止特定类型的处理器重排序。

由于常见的处理器内存模型比 JMM 要弱,Java 编译器在生成字节码时,会在执行指令序列的适当位置插入内存屏障来限制处理器的重排序。同时,由于各种处理器内存模型的强弱不同,为了在不同的处理器平台向程序员展示一个一致的内存模型,JMM 在不同的处理器中需要插入的内存屏障的数量和种类也不同。

CPU内存屏障

  1. LoadLoad:禁止读和读的重排序;
  2. StoreStore:禁止写和写的重排序;
  3. LoadStore:禁止读和写的重排序;
  4. StoreLoad:禁止写和读的重排序。

Java内存屏障

public final class Unsafe { // LoadLoad + LoadStore public native void loadFence();// StoreStore + LoadStore public native void storeFence();// loadFence() + storeFence() + StoreLoad public native void fullFence();
}

在这里插入图片描述
在这里插入图片描述

2. happens-before

JMM 使用 happens-before 规则来阐述操作之间的内存可见性,以及什么时候不能重排序。

在 JMM 中, 如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须要存在 happens-before 关系。换个角度来说,如果A happens-before B,则意味着A的执行结果必须对B可见,也就是保证跨线程的内存可见性。

其中,4条规则与程序员密切相关。

  1. 程序顺序规则:一个线程中的每个操作,happens-before 于该线程中的任意后续操作;
  2. volatile 变量规则:对一个 volatile 域的写,happens-before 于任意后续对这个 volatile 域的读;
  3. synchronized 规则:对一个锁的解锁,happens-before 于随后对这个锁的加锁;
  4. 传递性:若 A happens-before B,且 B happens-before C,则 A happens-before C;
  5. start() 规则:若线程 A 执行 ThreadB.start(),则线程 A 的这个操作 happens-before 于线程 B 中的任意操作;
  6. join() 规则:若线程 A 执行 ThreadB.join() 并成功返回,那么线程 B 中的任意操作 happens-before 于线程 A 从 ThreadB.join() 的成功返回。

举个栗子

假设线程 A 执行 writer() 方法之后,线程 B 执行 reader() 方法。根据 happens-before 规则,这个过程建立的 happens-before 关系可以分为 3 类:

  1. 根据顺序规则,1 happens-before 2,3 happens-before 4;
  2. 根据 volatile 规则,2 happens-before 3;
  3. 根据 happens-before 的传递性规则,1 happens-before 4。
public class Test2 {int a = 0;volatile boolean flag = false;public void writer() {// 1a = 1;// 2flag = true;}public void reader() {// 3if (flag) {// 4int i = a;}}
}

更多关于「happens-before 和 as-if-serial 语义」请详细看这篇文章->>Java并发编程之happens-before和as-if-serial语义

http://www.ds6.com.cn/news/119034.html

相关文章:

  • 本地化网站建设怎么知道网站有没有被收录
  • 四川省和城乡建设厅网站点击器 百度网盘
  • 成都网站建设 培训班本地推广平台
  • 新建网站后域名跳转到别的网站了google浏览器网页版
  • 做量化投资网站网站建设全包
  • 网站建设技术团队有多重要关键词提取工具
  • 建设网站公司 销售额 排行信息流优化师工作内容
  • 动态网站建设实训总结百度推广网站一年多少钱
  • 如何做内容收费的网站百度推广要自己建站吗
  • 江阴那家网站做的好seo优化案例
  • 网站端和移动端分开建设域名一样么关键字排名查询工具
  • 自已如何做网站seo发展前景怎么样啊
  • 家电网站建设总体目标广州网站优化费用
  • 昆明网站制作公司重庆seo薪酬水平
  • 网站建设合同用交印花税廊坊seo培训
  • dede做视频网站国家再就业免费培训网
  • 自己做视频网站上传视频seo哪里有培训
  • 西安做网站找腾帆怎么接广告赚钱
  • 有没有做php项目实战的网站百度趋势搜索大数据
  • 网址导航下载免费的seo优化
  • 如何对新开网站做收录网页制作培训网站
  • 做网站大概价格安卓优化大师手机版
  • 做兼职的网站有哪些工作内容网站建设制作模板
  • 一个购物网站开发语言erp123登录入口
  • 汽车网站建设制作费用网络事件营销案例
  • 网站建设的三网合一荆门网站seo
  • 企业网站建设备案都需要什么泰州百度公司代理商
  • 政府网站制作费用沪深300指数基金排名
  • 怎么做简单的企业网站seo网站推广教程
  • 定制网站建设简介合肥网站seo