在实际项目中,有很多地方会需要用到线程管理,所以我开始对与线程这一块做一个学习。
在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的作用就是,不会再进行复制,而是在原来的值上进行操作
这样就解决了上面那个操作的值不同步的问题
这个需要看使用的场景来很好地选择