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

苏州网站建设哪家更好网站建设基础流程

苏州网站建设哪家更好,网站建设基础流程,南昌做网站开发的公司,找个兼职做网站的本文大部分整理自《Java并发编程的艺术》#xff0c;温故而知新#xff0c;加深对基础的理解程度。下面可以和小编来一起学习下 概述 本文大部分整理自《Java并发编程的艺术》#xff0c;温故而知新#xff0c;加深对基础的理解程度。 指令序列的重排序 我们在编写代码…本文大部分整理自《Java并发编程的艺术》温故而知新加深对基础的理解程度。下面可以和小编来一起学习下 概述 本文大部分整理自《Java并发编程的艺术》温故而知新加深对基础的理解程度。 指令序列的重排序 我们在编写代码的时候通常自上而下编写那么希望执行的顺序理论上也是逐步串行执行但是为了提高性能编译器和处理器常常会对指令做重排序。 1 编译器优化的重排序。编译器在不改变单线程程序语义的前提下可以重新安排语句的执行顺序。 2 指令级并行的重排序。现代处理器采用了指令级并行技术来将多条指令重叠执行。如果不存在数据依赖性处理器可以改变语句对应机器指令的执行顺序。 3 内存系统的重排序。由于处理器使用缓存和读/写缓冲区这使得加载和存储操作看上去可能是在乱序执行。 从Java源代码到最终实际执行的指令序列会分别经历下面3种重排序 转存失败重新上传取消 happens-before语义 从JDK 5开始Java使用新的内存模型使用happens-before的概念来阐述操作之间的内存可见性。那到底什么是happens-before呢 在JMM中如果一个操作执行的结果需要对另一个操作可见那么这两个操作之间必须要存在happens-before关系这里提到的两个操作既可以是在一个线程之内也可以是在不同线程之间。 happens-before规则如下 程序顺序规则 对于单个线程中的每个操作前继操作happens-before于该线程中的任意后续操作。监视器锁规则 对一个锁的解锁happens-before于随后对这个锁的加锁。volatile变量规则 对一个volatile域的写happens-before于任意后续对这个volatile域的读。传递性 如果A happens-before B且B happens-before C那么A happens-before C。 注意 两个操作之间具有happens-before关系并不意味着前一个操作必须要在后一个操作之前执行happens-before仅仅要求前一个操作(执行的结果)对后一个操作可见且前一个操作按顺序排在第二个操作之前。 happens-before与JMM的关系如图所示转存失败重新上传取消 如图所示一个happens-before规则对应于一个或多个编译器和处理器重排序规则。 重排序 重排序指的是编译器和处理器为了优化程序性能而对指令序列进行重新排序的一种手段。 如果两个操作访问同一个变量且这两个操作中有一个为写操作此时这两个操作之间就存在数据依赖性。数据依赖分为下列3种类型转存失败重新上传取消 上面情况只要重排序两个操作的执行顺序程序的执行结果就会被改变。而编译器和处理器可能会对操作做重排序但是编译器和处理器在重排序时会遵守数据依赖性编译器和处理器不会改变存在数据依赖关系的两个操作的执行顺序。 注意 这里所说的数据依赖性仅针对单个处理器中执行的指令序列和单个线程中执行的操作不同处理器之间和不同线程之间的数据依赖性不被编译器和处理器考虑。 as-if-serial语义 as-if-serial语义的意思是不管怎么重排序单线程程序的执行结果不能被改变。编译器、runtime和处理器都必须遵守as-if-serial语义。所以编译器和处理器不会对存在数据依赖关系的操作做重排序因为这种重排序会改变执行结果。但是如果操作之间不存在数据依赖关系这些操作就可能被编译器和处理器重排序。 下面还是以书中的实例(计算圆的面积)进行说明 double pi 3.14; // Adouble r 1.0; // Bdouble area pi * r * r; // C 上面3个操作的数据依赖关系如图所示 转存失败重新上传取消 A和C之间存在数据依赖关系同时B和C之间也存在数据依赖关系。因此在最终执行的指令序列中C不能被重排序到A和B的前面(因为C排到A和B的前面程序的结果将会被改变)。但A和B之间没有数据依赖关系编译器和处理器可以重排序A和B之间的执行顺序。 该程序的两种可能执行顺序 转存失败重新上传取消 as-if-serial语义把单线程程序保护了起来遵守as-if-serial语义的编译器、runtime和处理器共同为编写单线程程序的程序员创建了一个幻觉单线程程序是按程序的顺序来执行的。 程序顺序规则 根据happens-before的程序顺序规则上面计算圆的面积的示例代码存在3个happens-before关系。 1 A happens-before B。 2 B happens-before C。 3 A happens-before C。 而这里的第3个happens-before关系是根据happens-before的传递性推导出来的。 注意 这里A happens-before B但实际执行时B却可以排在A之前执行JMM并不要求A一定要在B之前执行。JMM仅仅要求前一个操作(执行的结果)对后一个操作可见且前一个操作按顺序排在第二个操作之前。这里操作A的执行结果不需要对操作B可见而且重排序操作A和操作B后的执行结果与操作A和操作B按happens-before顺序执行的结果一致。在这种情况下JMM会认为这种重排序并不非法JMM允许这种重排序。 重排序对多线程的影响 重排序是否会改变多线程程序的执行结果还是借用书中的一个例子 class ReorderExample {int a 0;boolean flag false;public void writer() {a 1; // 1flag true; // 2}public void reader() {if (flag) { // 3int i a * a; // 4}} } flag变量是个标记用来标识变量a是否已被写入。这里假设有两个线程A和BA首先执行writer()方法随后B线程接着执行reader()方法。线程B在执行操作4时能否看到线程A在操作1对共享变量a的写入呢 答案是不一定能看到。 由于操作1和操作2没有数据依赖关系编译器和处理器可以对这两个操作重排序同样操作3和操作4没有数据依赖关系编译器和处理器也可以对这两个操作重排序。 当操作1和操作2重排序时可能会产生什么效果(虚箭线标识错误的读操作用实箭线标识正确的读操作。) 转存失败重新上传取消 如图所示操作1和操作2做了重排序。程序执行时线程A首先写标记变量flag随后线程B读这个变量。由于条件判断为真线程B将读取变量a。此时变量a还没有被线程A写入在这里多线程程序的语义被重排序破坏了 当操作3和操作4重排序时会产生什么效果。下面是操作3和操作4重排序后程序执行的时序图 转存失败重新上传取消 在程序中操作3和操作4存在控制依赖关系。当代码中存在控制依赖性时会影响指令序列执行的并行度。为此编译器和处理器会采用猜测执行来克服控制相关性对并行度的影响。以处理器的猜测执行为例执行线程B的处理器可以提前读取并计算a*a然后把计算结果临时保存到一个名为重排序缓冲的硬件缓存中。当操作3的条件判断为真时就把该计算结果写入变量i中。猜测执行实质上对操作3和4做了重排序在这里重排序破坏了多线程程序的语义 注意 在单线程程序中对存在控制依赖的操作重排序不会改变执行结果。 在多线程程序中对存在控制依赖的操作重排序可能会改变程序的执行结果。 参考 《Java并发编程的艺术》 以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持脚本之家。 您可能感兴趣的文章: volatile与happens-before的关系与内存一致性错误深入浅出了解happens-before原则简单易懂讲解happens-before原则Java内存之happens-before和重排序浅谈Java内存模型之happens-before
http://www.zqtcl.cn/news/742376/

相关文章:

  • 长辛店网站建设手机评测网站
  • 网站建设公司选哪个好软件开发
  • 隐形眼镜网站开发的经济效益莘县网站开发
  • 开创集团网站建设如何在学校网站上做链接
  • 上海优秀网站设计百度投诉中心人工电话号码
  • 卖建材的网站有哪些跨境电商工具类产品的网站
  • 做毕业网站的周记网站开发项目书
  • 门户网站价格仿站工具下载后咋做网站
  • 国外优秀ui设计网站常州网站建设电话
  • 大连手机网站建设做外贸无网站如何做
  • 做旅游门票网站需要什么材料人工智能培训机构哪个好
  • 免费的网站程序个人网站可以做论坛么
  • ps中网站页面做多大的wordpress cdn 阿里
  • 深圳整站创意设计方法有哪些
  • 浙江做网站多少钱江门市网站开发
  • 保定建站价格dw软件免费安装
  • 在建设部网站上的举报凡科网怎么建网站
  • wordpress做小说网站工作期间员工花钱做的网站
  • 婚介网站方案小说网站架构
  • 英文在线购物网站建设湖北建设厅举报网站
  • 漯河网络推广哪家好宁波网站seo公司
  • 网站设计ppt案例做物流用哪个网站好
  • 做网站官网需多少钱天元建设集团有限公司财务分析
  • 一般网站建设用什么语言网络规划设计师历年考点
  • 做网站卖菜刀需要什么手续江苏网站优化
  • 花生壳内网穿透网站如何做seo优化鞍山58同城网
  • 怎么为一个网站做外链跨境电商app
  • 医疗网站不备案seo技巧课程
  • 网页和网站有什么区别湖南省郴州市邮编
  • 公考在哪个网站上做试题武威做网站的公司