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

郑州加盟网站建设做教育集团的网站建设

郑州加盟网站建设,做教育集团的网站建设,大视觉网站建设,wordpress 返回顶部代码Java并发编程之验证volatile不能保证原子性通过系列文章的学习#xff0c;凯哥已经介绍了volatile的三大特性。1#xff1a;保证可见性 2#xff1a;不保证原子性 3#xff1a;保证顺序。那么怎么来验证可见性呢#xff1f;本文凯哥(凯哥Java:kaigejava)将通过代码演示来证…Java并发编程之验证volatile不能保证原子性通过系列文章的学习凯哥已经介绍了volatile的三大特性。1保证可见性 2不保证原子性 3保证顺序。那么怎么来验证可见性呢本文凯哥(凯哥Java:kaigejava)将通过代码演示来证明为什么说volatile不能够保证共享变量的原子性操作。我们来举个现实生活中的例子中午去食堂打饭假设你非常非常的饥饿需要一荤两素再加一份米饭。如果食堂打饭的阿姨再给你打一个菜的时候被其他人打断了给其他人打饭然后再回过头给你打饭。你选一荤两素再加一份米饭打完的过程被打断了四次耗时30分钟。你想想你自己的感受。是不是要疯了要暴走了其实如果把从你点菜到阿姨给你打完饭这个过程看着计算机的一个线程执行过程的话那么在你点菜到你拿到饭菜这个过程是一个完整的不能被打断的这就是所谓的原子性。如果被多次打断的话想想你的心理就知道程序如果在执行过程被打断后的结果了。原子性操作的定义所谓的原子性操作就是线程对变量的操作一旦开始就会一直运行直到结束。中介不会因为其他原因而切换到另一个线程。操作是不可分割的在执行完毕之前是不会被其他任务或是事件中断的。一个操作或者是多个操作要么执行都成功要么执行都失败(可以结合数据库的原子性理解)。怎么证明volatile修饰的共享变量就不能保证原子性呢模拟场景共享变量volatile int number0执行number操作。使用多个线程多次调用。看看使用volatile修饰的number在执行结束后的结果是否是我们预期的结果。我们分别用10个线程执行100次50个线程执行1000次以及50个线程执行一百万次来看看结果。先来看看变量是用volatil修饰的再来看看主线程里面按照上面咱们规定的线程数量运行次数来看看咱们预期结果和实际运行结果我们分别用10个线程执行100次50个线程执行1000次以及50个线程执行一百万次来从上面表格中我们可以看到即时共享变量用volatile修饰了。但是随着线程数量或者执行次数的增加实际运行结果与预期结果相差越来越大。如果预期结果和运行结果一致则说明保证了原子性但是从结果来看不是这样的。从而证明了volatile的第二个特性不能保证原子性。为什么从i的运行结果上就能看出不保证原子性呢我们来分析正常来说200个线程,每个线程执行了1000次。最后应该输出的是200*100020000.二十万。但是实际结果却不是二十万次。那说明了什么呢请看下图说明:主内存中有共享变量number的值是0现在有4个CPU带着4个线程都从主内存中copy变量到自己的工作区。这个是CPU1先竞争到然后再线程1的工作区中执行了number.执行后将number的值更新成了1写回到主内存中了。这个时候正要或者正在通知其他CPU主内存中的number值变化了。CPU2和CPU3都收到通知了将自己工作区的变量置为无效重新从主内存获取到number1的值。这个时候CPU4执行的也快在还没有收到CPU1的通知的时候就将自己运行后的number的值也写回到了主内存中。其实这个时候cpu1线程1的操作还在进行中但是因为cpu4线程4的操作打断了线程1的操作。第一轮运行结果应该是4但是因为线程4把线程1执行打断了将线程1执行结果覆盖了。所以实际执行后的效果有可能是3或者2但是不可能是4.从上分析结果我们更能理解到volatile修饰的共享变量不能保证原子性了。因为有可能被其他线程打断执行。怎么解决原子性问题呢可以使用juc包下的atomic包下的对象就可以了。Volatile的有序性证明欢迎学习下一篇《Java并发编程之验证volatile指令重排-理论篇》
http://www.sadfv.cn/news/397123/

相关文章:

  • 网站开发项目小组成员职责中国摄影网站有哪些
  • 重庆网站建设 九度互联一个小胖子从网站做任务的网站故事
  • 网站搭建崩溃用html制作网页
  • 文登网站建设软文推广怎么写
  • 档案网站建设与档案信息化营销型企业网站的类型
  • 上海自己注册公司流程及费用seo是什么职位
  • python 网站开发框架公司网站建设推进表
  • 做一个普通网站多少钱多备份 wordpress
  • 开封河南网站建设推广甘肃省
  • 为国外客户做网站建设域名提供商
  • 第一免费营销型网站用mcu做灯光效果网站
  • 做网站做58好还是赶集好天津seo博客
  • ui网页设计培训学校安卓优化大师下载
  • 做期货看什么网站的资讯网站二级目录打不开
  • 山西公司响应式网站建设平台网站建设中网站需求分析
  • 东莞企业网站建设设计如东建设网站
  • 重庆网站开发哪家好网站建设注意事项知乎
  • 公司网站建设山东外贸网站搭建
  • 西安电子科技大学信息化建设处网站广州大学生网页设计大赛
  • 上传软件的网站wordpress阅读全文插件
  • 网站建设文案策划网站域名asia是
  • 网站建设服务流程贵阳哪些公司建网站
  • 罗湖区网站公司北京中关村在线官网
  • 网上拿手工做的网站wordpress网站维护插件
  • 开发网站的申请怎么写网站开发摊销
  • 网站规划与建设的流程与方法 高中信息技术php网站后台入口
  • 怎么自己做充值网站苏州网站建设网站制作的公司
  • 广州营销网站建设广州抖音seo公司
  • 网站 空间 购买做网站单网页
  • 商品网站开发需求表国家最新新闻