范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

多线程情况下,你的代码执行顺序可能不是顺序执行,结果会不一致

  一、思考多线程情况下,程序执行顺序是否是按顺序执行首先定义x = 0; y = 0; a = 0; b = 0; 然后思考a = 1;x = b;两行代码谁先执行问题? 二、实战测试2.1 测试逻辑首先默认为x = 0; y = 0; a = 0; b = 0;然后开启两个线程; 线程1执行:a = 1;x = b; 线程2执行:b = 1;y = a; 有且只有x = b,y = a两个同时先执行,才会出现x=y=0。所以测试是否存在x=y=0观察指令是否会出现重排现象。 2.2 代码测试 public class OrderTest {     private static int x = 0, y = 0;     private static int a = 0, b = 0;      public static void main(String[] args) throws InterruptedException{         for(long i = 0; i < Long.MAX_VALUE; i++){             x = 0; y = 0; a = 0; b = 0;             //CountDownLatch是一个同步工具类,它通过一个计数器来实现的,初始值为线程的数量。             // 每当一个线程完成了自己的任务,计数器的值就相应得减1。             // 当计数器到达0时,表示所有的线程都已执行完毕,然后在等待的线程就可以恢复执行任务。             CountDownLatch countDownLatch = new CountDownLatch(2);             Thread one = new Thread(new Runnable() {                 @Override                 public void run() {                     a = 1;                     x = b;                     // 每调用一次计数器值-1,直到count被减为0,代表所有线程全部执行完毕                     countDownLatch.countDown();                 }             });              Thread two = new Thread(new Runnable() {                 @Override                 public void run() {                     b = 1;                     y = a;                     countDownLatch.countDown();                 }             });              one.start();             two.start();             //等待计数器变为0,即等待所有异步线程执行完毕             countDownLatch.await();             if(x == 0 && y == 0){                 //x=y=0 只能是x = b;y = a;这两个先执行                 System.out.println("执行次数"+i+"发现x=y=0");                 break;             }          }     }  } 2.4 测试结果
  在1059079(100万)发现了指令重排现象。
  三、指令重排现象
  概念
  指令重排序是指源码顺序和程序顺序不一样,或者说程序顺序和执行的顺序不一致,重排序的对象是指令。
  指令重排序是编译器处于性能考虑,在不影响程序(单线程程序)正确性的条件下进行重新排序。指令重排序不是必然发生的,指令重排序会导致线程安全问题。指令重排序也被称为处理器的乱序执行,在这种情况下尽管指令的执行顺序可能没有完全按照程序顺序执行,但是由于指令的执行结果的提交(反应到寄存器和内存中),仍然是按照程序顺序来的,因此处理器的指令重排序并不会对单线程的正确性产生影响。指令重排序不会对单线程程序的正确性产生影响,但他可能导致多线程程序出现非预期结果。 四、如何解决
  使用volatile的内存屏障功能。
  使用volatile修饰的变量,在读或写之后会形成内存读写屏障的效果。
  写屏障会确保指令重排序时,不会将写屏障之前的代码排在写屏障之后。
  读屏障会确保指令重排序时,不会将读屏障之后的代码排在读屏障之前。
  在1059079(100万)发现了指令重排现象。
  我们用volatile修饰一下x,y,a,b变量,修改执行次数,在1059079(100万)后再加000,1059079000(10亿)再次运行观察。即
  等了30分钟还没执行结束,也没出现x=y=0,说明volatile成功屏障了指令重排现象。

什么样的身材穿旗袍才好看?旗袍虽然现在很少有人穿了,但不可否认的是,它曾经有过一段辉煌的历史,那就是在民国时期十分流行,倍受那时女士们的推崇和青睐,旗袍把颜色运用得炉火纯青,结合古香古色的图案,能够呈现出高你见到过哪些奇人奇事?最有争议的奇人精通搬运术,脸盆捞现金,至今真假成谜上个世纪八十年代,在重庆万州出现了一个奇人,名字叫杨德贵。杨德贵是个农民,没有多少文化。有一天,他突然称自己是姜子牙的第123代传会开车和不会开车的最大区别是什么?是闺女逼着我开车的。我和她是同学,一起学的驾照,她开了两年,16万的新车,成了伤痕累累的碰碰车。今年已经把三个人的分都扣得差不多归零了,现在让我开。很郁闷。1,不会开车,没钱走遍天宝马X3落地一般多少钱?感谢邀请,欢迎关注孟子说车!宝马汽车在国内的知名度一直都是比较高的,宝马x3这款车整体的外观设计确实非常的漂亮,新款车型的整个前脸是采用了家族式的设计风格,双肾进气,格珊天使眼的大羊汤怎么做?应该放什么香料?你好很高兴回答你的这个问题,先做个简单的自我介绍,本人从事兰州牛肉面行业多年,对于面食的制作和调汤的工艺是专业级别的,羊汤的制作其实很简单,因为拉面馆里也经常要制作羊汤,用羊汤来制河北省人口主要分布在哪里?河北省,简称冀,因位于黄河以北而得名。从以下图片可以看到,保定,石家庄是河北省人口最多的城市之一,保定位于京津冀三角地带,受京津城市发展影响,一部分人会选择就近的保定作为落脚点,侧以前农村人很喜欢的太阳能热水器为什么被淘汰了?太阳能热水器在二十年前被老百姓狂热追捧,受制于当初电热水器的高额售价,农村电价无序且计量标准不当,电费乱收,农村人不敢用电,所以很多宁愿选择一次性花三四千甚至更多购买不会每月都产生如果有1千万以后不再有收入,没有任何理财方式,够花一辈子吗?有一千万,够花十辈子。1,就现在这个年代,放在银行,每个月利息都用不完。现在,放在地方银行,一千万的利息大概是33333元。而普通职工的退休金大概3333元,比较好的工作工资大概9在大连年薪40万属于高收入吗?有哪些依据?大连年薪40万绝对是高收入了,大连虽然是计划单列市,此前还是新一线,但是薪资待遇在沿海发达城市当中并不算高,目前实际到手收入人均4000左右,那么一年也就30万出头,楼主是人均值的有没有人怀孕了,没有喝孕妇奶粉的?我开始没有喝,后来遇到搞活动,买了一桶,喝到一个月了都没喝完。我是产检的时候,问了问医生,需不需要单独补一下钙片还有DHA之类的,因为看很多孕妈有吃,医生看了看我抽血的结果,说我不有什么冷门但是非常好用的APP推荐吗?谢邀。推荐几个冷门但是非常好用的软件吧。一虚拟地球仪软件谷歌地球(GoogleEarth,GE)是一款Google公司开发的虚拟地球仪软件,它把卫星照片航空照相和GIS布置在一个地
首款骁龙8Gen2旗舰机曝光5000mAh电池68W快充,性能配置很稳这一阵子关于骁龙8Gen2的消息也是铺天盖地,基本每天都有很多人在讨论这个消息,根据最新的爆料大概已经锁定了将会搭载这款处理器的机型MotoedgeX40。关于这款摩托罗拉Moto盘点3款OPPO手机双11好价拉满,旗舰店福利活动别错过双十一正式到来,各大厂商都在紧锣密鼓地安排促销活动。其中OPPO手机不搞那些复杂的套路,直接给出了10亿补贴,旗下产品都有不同程度的降价活动,覆盖包括手机手表TWS耳机在内的不同品谷歌像素手表评论去年,谷歌和三星联手发布了WearOS的统一版本,该版本功能更强大,更完善,并且将在近一年内保持三星手表设备的独家功能。现在,只有少数智能手表运行WearOS3。5,谷歌的Pixe金鹰奖感人画面殷桃亲切喊丁勇岱爸爸,多位演员泪洒舞台11月6日,金鹰奖的颁奖晚会已经如期举行,各大奖项也已揭晓,其中人世间无疑成了最大赢家,拿下了最佳女主角奖最佳男主角奖最佳导演奖以及优秀电视剧奖四个大奖。殷桃与雷佳音最终夺得视后视视频深圳西丽湖国际科教城X9高校院所联盟成立!首届赛艇联赛开赛视频加载中深圳X9赛艇联赛开幕赛艇运动一直被誉为名校交流语言,是被公认为最能体现团队精神的体育项目之一。世界名校牛津剑桥赛艇比赛就因不仅是一项运动,更代表了一个世纪的赛艇文化和精神白色修身紧致休闲裤简洁素雅,美观大方,演绎时尚靓丽的美说到修身紧致的休闲牛仔裤,有时候我也会替它感到委屈。因为太过熟悉,我们经常会忽略它的存在。但当我们仔细盘点时,无论度过哪个春夏秋冬,还是走过大江南北,都不曾缺席它的身影。最爱的小墨太意外了!郑薇官宣辞职,中国女篮巅峰将至,姚明看懂了中国女篮在结束了女篮世界杯之后,球队队员都回归到各自的球队中,中国女篮也开始进入了休整期。对于中国女篮来说,此次的女篮世界杯中的表现,让球迷朋友们大为吃惊。特别是在对战欧美国家的球温柔可爱的大胖妞,加拿大大码模特AmandaCafe这篇文章给大家介绍的大码超模名字叫amandacafe,她是一名来自加拿大的大码模特,有着一头金色的长卷发和黑色的双眸,看上去十分性感,她喜欢把头发染的偏黑色一些,觉得黄黑相间的色氛围感拉满的文案一起吹过晚风的人,大概会记得久一些hi,这里是微醺文案馆1。我们沸腾,枯萎,烂漫,台下高朋满座,影子代替我吻你。2。草在结它的种子,风在摇它的叶子,我们站着不说话,就十分美好。3。和我私奔吧,在日落和暮色当中,趁夜5年回头率近90进博会这些老朋友为什么又来了?视频加载中11月5日至10日,第五届中国国际进口博览会在国家会展中心(上海)举行。今年参展的世界500强和行业龙头企业超过280家,回头率近90。五年来,进博会已经成为全方位多领域本周开始,福建天气将大反转今日(11月7日)18时45分迎来冬季的第一个节气立冬朔风起,地始冻,水始冰万物收藏你准备好迎接冬天了吗?福建今日平均气温在1621。5之间平均降雨量26。5mm早晚有寒意!近几天