多线程7---volatile关键字,刷新线程工作空间内存到主内存中去,即保持同步

1. 改成static也不行 private static  boolean isRunning = true; volatile关键字主要用于线程变量在多个线程之间的可见

 1 public class RunThread extends Thread{
 2     private volatile  boolean isRunning = true;
 3     public void setRunning(boolean isRunning) {
 4         System.out.println(Thread.currentThread().getName()+"线程setRunning");
 5         this.isRunning = isRunning;
 6     }
 7 
 8     public void run(){
 9         System.out.println(Thread.currentThread().getName()+"进入run方法...");
10         while(isRunning) {
11             //System.out.println(Thread.currentThread().getName()+"线程isRunning");
12         }
13         System.out.println(Thread.currentThread().getName()+"线程终止");
14     }
15 
16     public static void main(String[] args) throws Exception {
17         RunThread rt = new RunThread();
18         rt.start();
19         Thread.sleep(3000);
20         rt.setRunning(false);
21         System.out.println(Thread.currentThread().getName()+"线程isRunning值被设置成false");
22         Thread.sleep(100);
23         System.out.println(Thread.currentThread().getName()+"::"+rt.isRunning);
24     }
25     /* 不加volatile关键字, 主内存中的isRunning不会被刷新,永远都是true.所以线程不会终止,加了会把rt线程的工作内存变量刷新到主内存
26      * Thread-0进入run方法...
27         main线程setRunning
28         main线程isRunning值被设置成false
29         main::false
30      */
31 }
View Code

 

转载于:https://www.cnblogs.com/bravolove/p/7944500.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值