java缓存行与volatile有什么用

这篇文章主要讲解了“java缓存行与volatile有什么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java缓存行与volatile有什么用”吧!

10余年的中方网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整中方建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“中方网站设计”,“中方网站推广”以来,每个客户项目都认真落实执行。

CPU 为了更快的执行代码。于是当从内存中读取数据时,并不是只读自己想要的部分。而是读取足够的字节来填入高速缓存行。根据不同的 CPU ,高速缓存行大小不同。如 X86 是 32BYTES ,而 ALPHA 是 64BYTES 。并且始终在第 32 个字节或第 64 个字节处对齐。这样,当 CPU 访问相邻的数据时,就不必每次都从内存中读取,提高了速度。 因为访问内存要比访问高速缓存用的时间多得多。

可以看出来,CPU都是很机智的,每次读取不止把本次需要的数据读取进缓存,还会把相邻的数据也读进来,但是这样就有一个问题了,现在的CPU都是多核的,如果有一个数据同时被多个核心缓存,其中一个核心修改了这个数据的值,其他核心的缓存值就失效了,这时程序就出错了。

那么,如何应对这种情况呢?java中,可以给字段加上volatile关键字,使用volatile关键字的字段在值被改变后会强制令其他CPU的缓存失效,也就是说一个CPU在另外一个CPU改变了volatile修饰的数据后这个CPU会重新从内存读取而不会从缓存读取该数据,保证读取到的是新数据而不是失效数据。

可以看出,volatile解决了一个CPU更改数据后另外一个CPU不知道的问题,但是,如果使用不当,volatile是会降低程序效率的,下节将分析一个volatile导致的性能问题。

感谢各位的阅读,以上就是“java缓存行与volatile有什么用”的内容了,经过本文的学习后,相信大家对java缓存行与volatile有什么用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


文章名称:java缓存行与volatile有什么用
网址分享:http://scyanting.com/article/pgdhsi.html