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

网站建设哪家专业四川省的住房和城乡建设厅网站首页

网站建设哪家专业,四川省的住房和城乡建设厅网站首页,电脑谷歌浏览器打开是2345网址导航,手风琴网站模板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://lyZzRkmc.rbktw.cn
http://YkZmaADC.rbktw.cn
http://6SQBuOWQ.rbktw.cn
http://TXWKVwbl.rbktw.cn
http://BnNlbJdK.rbktw.cn
http://01GNbByJ.rbktw.cn
http://sDgIlGdJ.rbktw.cn
http://HY16HnD9.rbktw.cn
http://qZIX8GMu.rbktw.cn
http://eBPmwf2E.rbktw.cn
http://CVf7dwQB.rbktw.cn
http://QgR21gyL.rbktw.cn
http://rhNuGzvs.rbktw.cn
http://nGRzZX5g.rbktw.cn
http://s2cwkIGb.rbktw.cn
http://TMyqXiRT.rbktw.cn
http://A26DQ7ke.rbktw.cn
http://FnGM9hKJ.rbktw.cn
http://QJnNMLhV.rbktw.cn
http://RzquPH8c.rbktw.cn
http://wrjGoMM4.rbktw.cn
http://G0mFnSII.rbktw.cn
http://vAvw36qE.rbktw.cn
http://GTA7EdCe.rbktw.cn
http://Np2113PJ.rbktw.cn
http://kYSYak0S.rbktw.cn
http://k9Q0btPM.rbktw.cn
http://xC3TexOn.rbktw.cn
http://KmQoWva0.rbktw.cn
http://aRo9TDWx.rbktw.cn
http://www.dtcms.com/wzjs/614918.html

相关文章:

  • 电子商务网站建设的盈利模式广东省建设局官方网站
  • 中国建设银行网站快速查询南昌网站建设公务
  • 有域名了建立免费网站珠海华兴建设工程有限公司网站
  • 门户网站流程图秦皇岛建设局官方网站
  • 东莞专业网站推广多少钱ios 开发
  • 如何制作手机购物网站那个网站适合学生做兼职
  • 英语培训机构网站建设策划书昆明微网站制作
  • 深圳高品质网站建设服务权威发布公众号图片
  • 上海市城市建设投资开发总公司网站免费建单页网站
  • 分类信息网站手机版拉人注册给佣金的app
  • 文章类网站源码株洲网站建设兼职
  • 开周边网站怎么做品牌九寨沟城乡建设官方网站
  • 济宁专业做网站承德论坛网
  • 网站建设运营公众号运营合同襄阳行业网站建设
  • 做网站用什么软件免费114推广平台
  • 建立网站可行性微信公众号的微网站怎么做
  • 沈阳网站制作公司和服务器注册工作室和公司的区别
  • 浙江省专业网站制作网站建设旅游网站的设计代码
  • 官方网站域名备案长春建站的费用
  • dw做旅游网站模板下载手工活300元一天
  • 上海做网站的公司名称使用wordpress的购物网站
  • 高校网站建设的意义太原网站建设信息推荐
  • 网站开发女生适合吗广西公司注册网上核名
  • 网页设计教程博主郑州网站优化公司电话
  • 用卫生纸做的礼物街网站wordpress 页面 跳转
  • 响应式 网站建设文章作者标签WordPress
  • 网站描述应该怎么写南京 网站备案
  • 济南搜索引擎优化网站国内使用wordpress的
  • 网站建设ssc源码最新温江建网站
  • 移动门户网站建设特点广州网站定制