volatile可见性 在多线程中未生效

话说日子一天天过去,小年轻涉足多线程快要超两个小时总计时了。
随着上次匿名内部类 需要final修饰 的问题 寻找结束,其实当时还涉及到另一个问题。
当时小年轻是为了 研究一下volatile的可见性在多线程当中的应用来操作代码的。

说到这里,就要说一说一这个多线程会遇到的一些问题。
首先,我们知道当一个线程运行到中途时突然睡眠了 ,这是另一个线程其实是可以运行的,并且可以使用第一个线程所使用的变量。
但是如果这个变量是不可见的 ,那么另一个线程就不会知道变量是否在第一个线程中数据已经改变,迭戈线程如果后面改变了第一个线程的中变量的值,第一个线程也不知道。这样数据就不符合事实,完全不符合全球知识共享的现实,这可不行

这个时候变量的可见性就十分重要,所以volatile就出现了 。
经过volatile修饰的变量会变得在具有可见性,所以无论是第一个线程还是第二个线程都能随时看到变量值的改变。
以上内容就是本文最核心知识了,接下来就是小年轻自己的问题: 无需关看

接下来就是问题出现的时候了:


```java
在这里插入代码片
public class VolatieTest {
   volatile boolean  run=true;
   
   void m(){
       System.out.println("m start");
       while(run){
            try {
            //睡十秒  让另一个线程可以在这段时间启动,会改变变量的值
                TimeUnit.SECONDS.sleep(10);
            
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值