volatile使用代码示例

查找了关于volatie在网上的用法示例,发现都是有问题的,网上的这些代码示例并未体现出volatile的所宣称的效果,
经过一上午的代码调整和测试验证,终于验证了volatile的可见性效果,如下所示。
    
public class Test extends Thread  {


    volatile int x = 0; //此处可以将volatile去除 或者 替换为 static,经过对比可看出volatile的作用


    private void write() {
        x = 5;
    }


    private void read() {
        while (x != 5) {
        }
        if(x == 5){
            System.out.println("------stoped");
        }
    }


    public static void main(String[] args) throws Exception {
        Test example = new Test();


        Thread writeThread = new Thread(new Runnable() {
            public void run() {
                example.write();
            }
        });


        Thread readThread = new Thread(new Runnable() {
            public void run() {
                example.read();
            }
        });


        readThread.start();


        TimeUnit.SECONDS.sleep(5); //记住此处一定要暂停5秒,以保证writeThread一定会在readThread中执行
        System.out.println("------");
        writeThread.start(); }}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值