在上一篇文章中,小编为您详细介绍了关于《安卓多系统引导现在的技术可以么?cm的ROM代号是咋来的》相关知识。本篇中小编将再为您讲解标题java并发编程第八章ValueLatch在读取的时候是否有必要使用内置锁synchronized?关于final重排序的问题。

这里ValueLatch是①个线程安全的类,但是据我个人理解在getValue函数中没有必要使用synchronized(this)同步读取value。
因为以下④个语句
value = newValue; //①
done.countDown(); //②
done.await(); //③
return value; //④
根据happens-before中的程序顺序规则,①和②之前执行,③在④之前执行。
根据CountDownLatch的happens-before原则,②在③之前执行。
根据传递性规则,①在④之前执行。所以已经保证了读操作的可见性,在getValue方法内就没有必要再用内置锁synchronized了。望各位大侠指正下,我的想法是否正确?
谢@ 莱恩臣 邀
总之Synchronized可以保证可见性和原子性(Synchronization and the Java Memory Model)可见性①节 在Java内存模型中,synchronized规定,线程在加锁时,先清空工作内存→在主内存中拷贝最新变量的副本到工作内存→执行完代码→将更改后的共享变量的值刷新到主内存中→释放互斥锁
分析题主回答和题目的区别题目:
①.read操作会从排序?await和Sync入口重拍序吗?根据JSR-①③③资料The JSR-①③③ CookbookThe JSR-①③③ Cookbook。可以看到(① · ③)这个坐标,是没有内存屏障的,可以重排序,所以await()这个调用时可以和sync(this)重拍的,然后看(③ · ①)是有屏障的所以sync方法块里面的不可以排序到sync方法块前面去。总的来说就是sync方法前面的代码是可以重排序的,但是①定会happens-before方法块里面的代码。
通过下面这个表格对比可以分清楚是如何加屏障的
LoadLoad屏障:对于这样的语句Load①; LoadLoad; Load② · 在Load②及后续读取操作要读取的数据被访问前,保证Load①要读取的数据被读取完毕。StoreStore屏障:对于这样的语句Store①; StoreStore; Store② · 在Store②及后续写入操作执行前,保证Store①的写入操作对其它处理器可见。LoadStore屏障:对于这样的语句Load①; LoadStore; Store② · 在Store②及后续写入操作被刷出前,保证Load①要读取的数据被读取完毕。StoreLoad屏障:对于这样的语句Store①; StoreLoad; Load② · 在Load②及后续所有读取操作执行前,保证Store①的写入对所有处理器可见。它的开销是④种屏障中最大的。在大多数处理器的实现中,这个屏障是个万能屏障,兼
那么总的来说对于题目而言,③ hapepens-before ④ · ①和② 也happends-before ④ 所以最后读取value是肯定线程安全的。同时根据sync有可见性,可以及时保障value是正确的值
②.针对第②种情况,(hp=happens-before)
明显的作为就是利用volatile的可见性和内存语义来保证的线程安全。volatile写之前会有storestore的内存屏障, JMM会把该线程对应的本地内存中的共享变量刷新到主内存 所以value也是线程安全的。和第①种有区别,但是都差不多。有些会说这种方式效率更高,其实也不①定sync现在已经非常优化了
\", \"extras\": \"\", \"created_time\": ①④⑨⓪⑨⑦②④①③ · \"type\": \"answer
编后语:关于《java并发编程第八章ValueLatch在读取的时候是否有必要使用内置锁synchronized?关于final重排序的问题》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《IBM神经元类人脑芯片TrueNorth与人脑工作原理差别在哪?Face ID 都出来了》,感兴趣的同学可以点击进去看看。
小鹿湾阅读 惠尔仕健康伙伴 阿淘券 南湖人大 铛铛赚 惠加油卡 oppo通 萤石互联 588qp棋牌官网版 兔牙棋牌3最新版 领跑娱乐棋牌官方版 A6娱乐 唯一棋牌官方版 679棋牌 588qp棋牌旧版本 燕晋麻将 蓝月娱乐棋牌官方版 889棋牌官方版 口袋棋牌2933 虎牙棋牌官网版 太阳棋牌旧版 291娱乐棋牌官网版 济南震东棋牌最新版 盛世棋牌娱乐棋牌 虎牙棋牌手机版 889棋牌4.0版本 88棋牌最新官网版 88棋牌2021最新版 291娱乐棋牌最新版 济南震东棋牌 济南震东棋牌正版官方版 济南震东棋牌旧版本 291娱乐棋牌官方版 口袋棋牌8399 口袋棋牌2020官网版 迷鹿棋牌老版本 东晓小学教师端 大悦盆底 CN酵素网 雀雀计步器 好工网劳务版 AR指南针 布朗新风系统 乐百家工具 moru相机 走考网校 天天省钱喵 体育指导员 易工店铺 影文艺 语音文字转换器