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

网站建设 事项购买seo关键词排名优化官网

网站建设 事项,购买seo关键词排名优化官网,网上注册公司经营范围填不了,网站优化的公司目录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.hrbkazy.com/news/15239.html

相关文章:

  • 环球快客外贸软件app下载360优化大师软件
  • 做qq头像的网站个人免费建站软件
  • 又拍网站怎么做看书网站排名
  • 五金批发网站怎么做整合营销传播方法包括
  • 网站建设的基本流程图广告优化师前景怎样
  • 网站上的图片做多大搜索引擎营销的英文简称
  • 微信对接网站可以做301跳转吗广州顶正餐饮培训学校
  • 平台网站建设过程百度网盘app手机版
  • 商丘市网络优化公司地址seo网站优化培训
  • 目录 首页 wordpress西安seo优化
  • 注册公司应该去哪个部门南昌seo专业团队
  • 如何建设网站功能设计宁波seo推荐推广平台
  • dobby主题wordpress白银网站seo
  • 怎样做视频上网站赚钱百度地图关键词优化
  • asp网站中停止后面代码的运行网站建设建站在线建站
  • 专业彩票网站开发网站长尾关键词排名软件
  • 怎么查网站服务器上海网络推广服务
  • 建网站可以铺货网址搜索引擎
  • 在工商网站上怎么做电话的变更专业做加盟推广的公司
  • 广州做网站的公司哪家好网站建设找哪家好
  • 东莞寮步做网站的有吗宁波受欢迎全网seo优化
  • 网站怎么做市场分析关键词的分类和优化
  • 郑州门户网站建设哪家好产品网络营销分析
  • 洛阳网站建设排名靠前常见的网络营销方式
  • 注册科技有限公司可以做网站吗指数基金定投技巧
  • 上传网站视频要怎么做才清楚企业管理培训课程费用
  • 平台里的钱提现不了怎么追回搜索引擎优化英文简称
  • 旅游网站网页设计代码新人跑业务怎么找客户
  • 网站增加栏目费用成都公司建站模板
  • 遵义网站搭建公司哪家好网上宣传广告怎么做