Java线程学习(一、volatile)

在实际项目中,有很多地方会需要用到线程管理,所以我开始对与线程这一块做一个学习。

在Java1.5以后,提供了一个很强大的处理线程的包,叫做java.util.concurrent,在这个包下面有很多强大的处理线程用的类,那么下面就一步步来学习


一、volatile


这个关键字,我以前用过,可以用与线程安全,比如我现在写单例都这么写

public class TestSingleInstance {

    private static volatile TestSingleInstance mInstance;

    private TestSingleInstance(){}

    public static TestSingleInstance getInstance(){
        if(null == mInstance){
            synchronized (TestSingleInstance.class){
                if(null == mInstance){
                    mInstance = new TestSingleInstance();
                }
            }
        }
        return mInstance;
    }

}

单例大家都懂,那么这个volatile是干什么用的呢


线程的在操作数据时的原理是这样的




所以在多线程的时候就会发生   num的值在两个线程是不同步的,线程1的num值变成1之后,线程2的num值还在在0的基础上加1


那么volatile的作用就是,不会再进行复制,而是在原来的值上进行操作



这样就解决了上面那个操作的值不同步的问题


这个需要看使用的场景来很好地选择









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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值