voliate和synchronized「建议收藏」

voliate和synchronized「建议收藏」线程安全考虑三个方面:原子性,可见性,有序性为什么使用voliate关键字?我们先来看正常情况下线程的执行

大家好,又见面了,我是你们的朋友全栈君。

线程安全考虑三个方面:原子性,可见性,有序性

为什么使用voliate关键字?

正常情况下编译器为了加快程序运行的速度,对一些变量的写操作会先在寄存器或者是CPU缓存上进行,最后才写入内存.而在这个过程,变量的新值对其他线程是不可见的.而volatile的作用就是使它修饰的变量的读写操作都必须在内存中进行!

voliate和synchronized「建议收藏」

  • voliate和synchronized区别
  • volatile本质是在告诉jvm当前变量在寄存器中的值是不确定的,需要从主存中读取,synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住.
  • volatile仅能使用在变量级别,synchronized则可以使用在变量,方法.
  • volatile仅能实现变量的修改可见性,但不具备原子特性,而synchronized则可以保证变量的修改可见性和原子性.
  • volatile不会造成线程的阻塞,而synchronized可能会造成线程的阻塞.
  • volatile标记的变量不会被编译器优化,而synchronized标记的变量可以被编译器优化.

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136335.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月4日 下午2:20
下一篇 2022年5月4日 下午2:40


相关推荐

  • 服务器cpu型号后面的字母,Intel 至强 E3服务器CPU后缀解读[通俗易懂]

    服务器cpu型号后面的字母,Intel 至强 E3服务器CPU后缀解读[通俗易懂]三、Intel至强E3服务器CPU后缀解读DIY玩家认识服务器CPU最多的无疑是E3神教,今天我们就总结下XeonE3神教的CPU后缀有什么特色。●V1-V5E3神教!从SNB开始,Intel就推出了E3系列至强CPU。由于阵脚一样,只需升级BIOS就能享用信仰级至强CPU,让2011年开始E3神教开始壮大。Intel也推出了E3的后续型号,与历代酷睿对应,从IvyBridge的V2到Sk…

    2022年5月29日
    54
  • Java并发编程之ConcurrentSkipListMap

    Java并发编程之ConcurrentSkipListMapConcurrentSkipListMap数据结构抓住了数据结构,对于理解整个ConcurrentSkipListMap有很重要的作用,其实,通过源码可知其数据结构如下。可以看到ConcurrentSkipListMap的数据结构使用的是跳表,每一个HeadIndex、Index结点都会包含一个对Node的引用,同一垂直方向上的Index、HeadIndex结点都包含了最底层的Node结点的…

    2025年5月22日
    5
  • 最近游戏更新 未整理 无图片 续传_续薪火浅浅烂

    最近游戏更新 未整理 无图片 续传_续薪火浅浅烂模拟人生之超级明星(TheSims:Superstar)三项属性修改器http://patch.ali213.net/download.asp?id=2872黑客帝国(EntertheMatrix)v1.51升级档五项属性修改器http://patch.ali213.net/download.asp?id=2868黑客帝国(EntertheMatrix)v1.52升级档激活成功教程版

    2026年2月12日
    4
  • dota2已连接协调服务器,正在登陆中的解决办法「建议收藏」

    dota2已连接协调服务器,正在登陆中的解决办法「建议收藏」这两天,家里有亲戚过世,暗恋的小姑娘跟别人出去玩了,心情不好,打开dota2,连了好几次都没连上,按网上的说法清除缓存,重启电脑都试过了,不行,后来发现,我是手机开的热点,这里信号不好,换一个信号好的卡就行了,很多关于网络的问题其实都和网速有关,因为网速不合格和断网基本上是同一个问题,所以一般会引起混淆。…

    2022年5月17日
    143
  • js 判断数组中是否包含某个元素_前端数组包含某个元素

    js 判断数组中是否包含某个元素_前端数组包含某个元素Array.prototype.S=String.fromCharCode(2); Array.prototype.in_array=function(e){ varr=newRegExp(this.S+e+this.S); return(r.test(this.S+this.join(this.S)+this.S)); }; vararr=

    2022年10月19日
    4
  • scanf 函数的返回值

    scanf 函数的返回值1 scanf 函数是有返回值的 它的返回值可以分成三种情况 1 正整数 表示正确输入参数的个数 例如执行 scanf d d amp a amp b 如果用户输入 34 可以正确输入 返回 2 正确输入了两个变量 如果用户输入 3 4 可以正确输入 a 无法输入 b 返回 1 正确输入了一个变量 2 0 表示用户

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号