当前位置: 首页> 财经> 访谈 > volatile,最轻量的同步机制

volatile,最轻量的同步机制

时间:2025/8/6 5:25:27来源:https://blog.csdn.net/qq_73617408/article/details/140609844 浏览次数:0次

        

目录

一、volatile

二、如何使用?

三、volatile关键字能代替synchronized关键字吗?

四、总结:


        还是老样子,先来看一段代码:

d3afa83d47c048f782d320cb3328cbf4.png

        我们先由我们自己的常规思路分析一下代码:子线程中,一直循环,直到ready被改为true,才能退出循环,然后打印number变量的值,我们在主线程中将ready修改为了true,那么子线程就可以打印number值了,但是结果与预期不同,主线程都结束了,子线程都还在循环中出不来,我们不是改了ready的值吗?这就说明子线程感应不到ready的变化,那怎么样才能保证让子线程能感应到ready的值被修改了呢?——使用volatile。

一、volatile

        volatile关键字保证了不同线程对某个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其它线程来说是立即可见的。


二、如何使用?

        在变量前添加volatile关键字就ok了!

438b3e6bf2d143a5bbf1adfa5198c2c0.png


三、volatile关键字能代替synchronized关键字吗?

        用代码来说话,使用我们之前用的代码——计数:

f643b1a67d814749a19cace3cde20e9f.png

        可以看到,结果是不对的,说明volatile关键字不能保证线程安全。所以volatile关键字不能代替synchronized关键字。


四、总结:

  • volatile关键字只保证了线程的可见性
  • volatile关键字不能代替synchronized关键字  
  • volatile关键字不能保证线程安全
  • volatile关键字适用于一个线程写,多个线程读的场景。

  

关键字:volatile,最轻量的同步机制

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: