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

交友app网站建设深圳网约车租赁公司哪家好

交友app网站建设,深圳网约车租赁公司哪家好,郑州网站建设哪家好,网站建设软文Java内存模型可以说是Java并发的底层支持#xff0c;了解Java内存模型才能正在了解Java并发。内存模型在内存中设置一个变量value 1#xff1b;那么其他线程能在什么时候读取到这个结果呢#xff1f;有可能不能立即甚至永远都读不到。比如指令顺序与源代码中的…Java内存模型可以说是Java并发的底层支持了解Java内存模型才能正在了解Java并发。内存模型在内存中设置一个变量value 1那么其他线程能在什么时候读取到这个结果呢有可能不能立即甚至永远都读不到。比如指令顺序与源代码中的顺序不同编译器会把变量保存在寄存器而不是内存中处理器可以采用乱序或并行等方式来执行指令缓存可能会改变将写入变量提交到主内存的次序保存在处理器本地缓存中的值其他处理器是不可见的这些情况都会导致其他线程不能读取到变量的最新值。而Java内存模型(Java memory Model,简称JMM)则是规定了JVM在什么时候对变量的修改对其他线程可见。在多核处理器中每个处理器都有自己的缓存并且定期地与主内存进行协调不同的处理器架构中提供了不同级别的缓存一致性。在现在的CPU中分了多级内存缓存比如寄存器、L1、L2、L3、内存等每种处理器都有各自的规则和处理方式而要保证修改变量对其他线程可见的难度就很大。所以在JMM中抽象出来只分工作内存、主内存。主内存主要存共享变量工作内存为每个线程拥有存放线程需要的共享变量副本。各个线程只能读、改自己工作线程的数据不能直接操作主内存的变量线程修改变量时先修改工作内存变量再同步到主内存当中。在多线程环境中维护程序的串行性将会导致很大的性能开销所以只有当多个线程要共享数据时才必须协调它们之间的操作并且JVM依赖程序通过同步操作来找出这些协调操作在何时发生。通过只分两种内存就简单很多了。Happens-Before规则上一节说到JVM通过依赖同步操作来找出协调操作在何时发生而JMM就是通过各种操作来定义的。JMM对程序中的所有操作定义了一个偏序关系称为Happens-Before。Happens-before简单解释下如果第一个操作Happens-before第二个操作也就是说第一个操作对于第二个操作时可见的也就是第二个操作能够看到第一个操作的结果。而Happens-before主要包含以下规则程序顺序规则一个线程内肯定要保证执行顺序比如两步代码前一步执行肯定要在下一步执行之前如果不能保证规则那么如果后一步依赖前一步的结果那么肯定会出现错误。不过这个规则和指令重排冲突但是执行重排是在保证执行结果依然符合Happens-before执行的结果下才重排所以并不冲突。监视器规则对同一个锁肯定前面一个释放了锁后面一个才能获取到锁只有获取到锁才能释放锁。volatile变量规则volatile修饰的变量在一个线程修改后其他线程一定能够看到最新值。线程启动规则在主线程执行一个子线程那么子线程的run方法一定能够看到主方法调用子线程的start方法之前的操作。线程结束规则主线程调用了子线程的start后如果再调用join方法那么join方法肯定能看到子线程run方法执行的结果。中断规则对线程执行Interrupt方法后那么执行interrupted和isInterrupted都能看到结果。终结器规则对象的构造函数必须在对象的终结器执行前完成。传递性A操作在B之前B在C之前那么A一定在C之前也就是C一定能够看到A执行的结果。在多线程中每个线程每段代码执行的时间是不确定的而Happens-before则保证了单个线程内执行顺序同时也保证在多线程哪些情况下有先后顺序。比如比如在线程A中执行了线程B的start方法和B线程的join方法那么B线程的run方法肯定在A在调用B的start方法之后执行也就是B中的run方法能看到之前的执行结果。同样join方法一定是run方法结束以后才能执行也就是join之后的程序能够看到run执行的结果。单例模式的双重检查单例模式的一种实现方式代码如下图volatile保证了变量的可见性就是前面讲到的volatile变量规则在第二次验证变量singleton时才能得到的正确。如果变量没有用volatile修饰一个线程初始化了初始化结果可能还在工作内存中即使同步到主内存中但是如果没有同步到其他内存中那么其他线程就可能再次初始化。总结JMM实际上是由定义的一系列操作组成这些操作确定了Java的基础特性尤其在多线程并发方面它主要对重排序、原子性、内存可见性这三个方面维护保证了多线程的正确执行。Java程序员日常学习笔记如理解有误欢迎各位交流讨论
http://www.pierceye.com/news/750946/

相关文章:

  • 做的asp网站手机号码网站开发软件手机版
  • android 做电子书下载网站网络热词作文
  • 网络网站销售龙岩建筑网
  • 专门找事做的网站iis7 wordpress伪静态规则
  • 做字体的网站济宁网站建设 济宁智雅
  • 工程门户网站建设怎样制作表白网站
  • 手机如何创建个人网站上海 .net网站建设
  • 小程序app软件定制开发首页排名优化公司
  • 红酒 专业 网站建设视频网站后台
  • 宁波网站建设58同城百度突然搜不到网站
  • 网站开发技术和seo的联系wordpress发邮件卡主
  • 网站开发安全模块方案网站运营方案怎么写?
  • 章丘网站制作手机网站 微信平台
  • 自定义功能的网站做坏事网站
  • 做农村电子商务的网站有哪些wordpress批量修改引用网址
  • 简述建立网站的步骤内蒙古建设监理协会网站
  • 网站上传格式工信部 网站备案查询
  • 网站开发怎么让别人看到网站设计主流尺寸
  • 都匀经济开发区建设局网站华宇网站建设
  • 南谯区住房和城乡建设局网站大连百度推广优化
  • 东莞设计网站公司被邀请做刷客会不会碰到钓鱼网站
  • 阿里云服务器多个网站南充网络推广
  • 电子商务网站建设规划设计任务书wordpress 有道云笔记
  • 广州市地铁站地图潍坊网站建设方案
  • 买一个网站服务器多少钱企业 怎么建交互网站
  • 国产网站开发工具公司福建新闻最新消息
  • 云主机和云虚拟主机优化教程网站推广排名
  • 佛山网站建设开发二维码生成器永久免费版下载
  • 衡水网站建设衡水网站建设网站建设南宁
  • 汽车网站推广策划方案wordpress又拍云cdn伪静态