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

网站服务器建设上海网络推广公司网站

网站服务器建设,上海网络推广公司网站,制作图片用什么软件,汕头做网站优化公司volatile是java的关键字,作用:①保证线程间的可见性;②防止指令重排。下面看一个demo,启动2个线程,一个线程读取flag变量的值,另外一个线程修改flag变量的值。 public class VolatileDemo {private static…

        volatile是java的关键字,作用:①保证线程间的可见性;②防止指令重排。下面看一个demo,启动2个线程,一个线程读取flag变量的值,另外一个线程修改flag变量的值。

public class VolatileDemo {private static int flag = 0;//private volatile static int flag = 0;public static void main(String[] args) {new Thread(){@Overridepublic void run() {int localFlag = flag;while (true){if (localFlag != flag){System.out.println("读取到被修改的flag值为:"+flag);localFlag = flag;}}}}.start();new Thread(){@Overridepublic void run() {int localFlag = flag;while (true){System.out.println("flag被修改为了:"+ ++localFlag);flag = localFlag;try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}}.start();}
}

        执行2遍,区别是否有volatile的修饰,执行结果如下。

        为什么使用volatile关键字,就能保证线程之间变量的可见性?它是如何做到的?如下图是该例的java内存模型。其实java内存模型的实现,是参考了CPU缓存模型。CPU缓存不一致的问题,早期是用总线加锁机制来实现,但是效率太差,很容易出现串行化的问题。

        后来常用MESI协议:MESI(Modified Exclusive Share Invalid)(也称伊利诺斯协议)是一种广泛使用的支持写回策略的缓存一致性协议,该协议被应用在 Intel 奔腾系列的 CPU 中。当一个 CPU 修改了 高速缓存中的数据,会通知其他缓存了这个数据的 CPU,其他 CPU 会把 自己高速缓存 中这份数据置为无效,要读取数据的话,直接去内存中获取,不会再从缓存中获取了。

        如下图java内存模型:线程的工作内存和主内存,read(从主存读取),load(将主存读取到的值写入工作内存),use(从工作内存读取数据来计算),assign(将计算好的值重新赋值到工作内存中),store(将工作内存数据写入主存),write(将store过去的变量值赋值给主存中的变量)。

        那volatile到底是如何保证可见的?结合上图的java内存模型,如果该变量是volatile修饰的,那assign操作后,一定会强制保证立马执行store + write,刷回到主内存里去。同时会让其他线程工作内存里的flag变量过期,从主内存重新读取。

http://www.dtcms.com/wzjs/552633.html

相关文章:

  • 做图表的网站模板网站会影响网站优化吗
  • 建设网站用哪个主机好如何在网站上推广自己的链接
  • 批量网站建设开元酒店集团品牌建设
  • 兴国县城乡规划建设局网站就业网站建设方案
  • 融水苗族自治县网站建设公司娄底360seo优化公司
  • 网站设计中级南昌那个公司做网站好
  • 国外做做网站wordpress默认缩略图
  • 网站程序购买微信公众号要钱吗
  • 电商网站用php做的吗骏域网站建设专家电脑版
  • 网站对公司有什么好处南海网站建设多少钱
  • 北京高端网站建设费用做标准件生意上什么网站
  • php做的静态网站怎么加密网站搭建报价单
  • 国外虚拟物品交易网站办公室装修设计app
  • 供电公司网站建设内容宁波专门做网站
  • 嘉兴网站建设一薇做企业服务这个行业怎么样
  • 怎样将整个网站公司网站建设深圳
  • 怎么做本地网站tcga做多因素分析的网站
  • 重庆网站建设近重庆零臻科技网站域名实名证明
  • 网站世界排名怎么做wordpress怎么连接主机
  • 公司网站策划宣传生成二维码的网站
  • 学做网站需要学什么网页制作作品免费下载
  • 网站程序代码优化社交app系统开发
  • 做视频网站的备案要求男生和女生做污的事情免费网站
  • 建筑工程公司网站模板下载福州百诚互联
  • 做网站的的价位苏州市吴中区建设局网站
  • 网站开发与网站设计区别企业免费网站制作
  • wordpress网站开发代码移动网站建设自助建站
  • 上海住房与建设部网站百度抓取网站登录
  • 酒店网站建设的构思做网站编程在程序
  • 网站建设的整体流程有哪些?劳务合同免费模板下载