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

网站建设 599wordpress 主题 ie8

网站建设 599,wordpress 主题 ie8,网站规划问题,短视频推广引流JMM概述 Java Meory Model java内存模型。在不同的硬件和不同的操作系统上,对内存的访问方式是不一样的。这就造成了同一套java代码运行在不同的操作系统上会出问题。JMM就屏蔽掉硬件和操作系统的差异,增加java代码的可移植性。这是一方面。 另一方面JM…

JMM概述

Java Meory Model java内存模型。在不同的硬件和不同的操作系统上,对内存的访问方式是不一样的。这就造成了同一套java代码运行在不同的操作系统上会出问题。JMM就屏蔽掉硬件和操作系统的差异,增加java代码的可移植性。这是一方面。
另一方面JMM定义的一系列规则能够保证线程并发的安全性。主要是保证线程的可见性,有序性,原子性。
具体来说它主要就是抽象了线程和主存之间的关系。(如下图)每个线程都有一个工作内存(cpu缓存),工作内存中存放着主存(内存)的副本,一般是共享变量,比如实例变量,静态变量但是不包括局部变量。线程读写数据是直接操作工作内存的。线程不能访问其他线程的工作内存。多个线程间通信是通过主存来完成的。
在这里插入图片描述

线程三大问题

原子性,可见性,有序性。(简记:客源有)
线程需要满足这三大特性,才能保证线程并发安全。而JMM就是为了实现这三大特性定义的一系列规则。

可见性问题

可见性指的是当一个线程修改了共享变量后,另一个线程能够立马得到修改的这个值。但是由于CPU缓存的存在,可见性往往会存在一些问题。
比如说在多线程下,每个线程将变量存放在CPU缓存中,一个线程修改了变量后,放在CPU缓存中。另一个线程无法立即得到最新的值。这就造成了共享变量的数据不一致的问题。

原子性问题

CPU在执行指令的过程中发生了线程切换,会导致一些变量数据不一致,这种问题就成为原子性问题。

有序性问题

CPU在执行指令的时候,为了充分利用内部的计算单元,处理器可能会对代码进行乱序执行。CPU在并发环境下,乱序执行可能会到导致结果错误。这种问题就叫做有序性问题。

JMM解决线程可见性,原子性,有序性问题

定义Java内存模型并非是一件容易的事情。不能单纯的禁用CPU缓存和编译优化,这样会严重影响程序性能。JMM抽象了线程和主存之间的关系,定义了程序中变量的访问规则来解决上述问题。
从抽象的角度来看,JMM定义了线程和主存之间的抽象关系:线程之间的共享变量存放在主内存中,每个线程都有一个私有的工作内存,本地内存中存储了主存中共享变量的副本,线程对变量的操作都是在工作内存中进行的。(这里的工作内存是一个抽象的概念。包含了CPU缓存,寄存器以及编译器优化。主内存则指的是物理硬件的主内存。)
在这里插入图片描述

可见性保证

可见性指的是当一个线程修改了共享变量的值之后,其他线程能够立马得到这个修改

volatile能够保证可见性和有序性,volatile修饰的变量在本地内存中修改后会立即同步到主存中去,供其他线程访问到。
锁也能保证可见性,锁在释放和申请的时候都会更新缓存,从主存中获取最新的值。

原子性保证

通过Lock和UnLock来保证。java中是synchronized关键字。synchronized关键字对应的底层jvm指令是monitorenter和moniterexit

    public void test01(){synchronized (this){int i = 1;}}

有序性保证

java中提供了volatile和synchronized两个关键字来保证线程之间的有序性。volatile本身就包含了指令重排的语义。而 synchronized 则是由一个变量在同一时刻只允许一个线程对其进行 lock 操作这条规则来保证有序性的

JMM核心概念-happens-before

如果一个操作happens-before另一个操作,那么第一个操作的执行结果对后续的操作是可见的。
两个操作存在happens-before关系,并不意味着一定要按照happens-before原则指定的顺序来执行。可以对指令进行重排序,只要保证结果正确性即可。

参考:
从线程三大特性深入理解JMM(Java 内存模型)
happens-before是什么?JMM最最核心的概念,看完你就懂了

http://www.yayakq.cn/news/69296/

相关文章:

  • 网站网站设计网站腾讯企点下载安装
  • 做自己的网站要钱么网站建设平台软件哪个好用
  • 网站建设 400电话 广告网站排版用什么软件
  • 深圳网站建设及优化我是在百度上搜广东网站建设
  • 北京科技网站建设静态wordpress ajax
  • 门户类网站建设需要多少钱天元建设集团有限公司证券
  • 张家港高端网站制作做什么网站比较简单
  • 内容网站 如何做采集南通企业网站排名优化
  • 郑州网站建设丶汉狮网络校园网络规划设计
  • 培训网站建设学校全球采购平台
  • 做简单的网站网站公司图片
  • 德文网站建设做ppt常用的网站有哪些
  • 取名网站怎么做网站后台分模块
  • 网站静态模板下载泸州大浪科技做网站
  • 个人做网站做什么样的话物流平台运营
  • 使用国外空间的网站二建证书查询官网入口
  • 免费psd素材网站微信小程序可以做视频网站吗
  • 为什么我自己做的网站搜索不到返佣网站都是自己做的
  • 做网站网站被抓没盈利外贸人常去的网站
  • 网站免费优化工具网站迁移到别的服务器要怎么做
  • 服饰 公司 网站建设wordpress整站
  • 巴中市建设局网站网站开发培训好学吗
  • 软件和网站开发福州科技网站建设怎么做
  • 网上购物的网站开发背景购房网
  • 做花茶的网站新能源电动汽车
  • 企业设计网站公司有哪些wordpress多站点统计
  • 网站备案回访电话号码巩义网站推广
  • 广东人才网官方网站招聘信息好看手机网站推荐
  • 重庆建网站cqiezscom深圳关键词自动排名
  • 西安哪家网站建设好app推广引流渠道