8.是不是想让您回答那个经典场景:volatile只能保证线程之间的可见性,而不保证原子性,当用volatile对一个变量x修饰后,用多个线程对这个变量x进行++操作,如果这个地方不加锁的话,其实还是有线程安全问题的,因为++这个操作,在JVM底层是三个操作(1.getstatic:从主内存中取到x的值 2.iadd:将x+1 3.putstatic:将当前结果从工作内存拷贝到主内存),当然1操作肯定是正确的,2操作的话,如果线程很多的话,可能其他线程已经改变了x的值,所以当进行3操作的时候,拷贝到主内存中的值可能是偏小的,最后会导致和我们想要的答案偏小。
1 1

相关推荐

点赞 评论 收藏
分享
牛客网
牛客企业服务