volatile本身并不保证原子性和线程安全,它只保证线程可见性。比如有两个应用场景,1在单例模式的双重检测中用 2在多个线程读里,用于判断标志位
{因为redis是单线程,所以它的原子操作incre加一操作,才能保证线程安全。而java并发包中的atomic是线程安全的}
下图例子即表明,多线程时,volatile并不线程安全。
volatile本身并不保证原子性和线程安全,它只保证线程可见性。比如有两个应用场景,1在单例模式的双重检测中用 2在多个线程读里,用于判断标志位
{因为redis是单线程,所以它的原子操作incre加一操作,才能保证线程安全。而java并发包中的atomic是线程安全的}
下图例子即表明,多线程时,volatile并不线程安全。
转载于:https://www.cnblogs.com/pengzhong2007/p/10610140.html