volatile

volatile

1.保证线程可见性
即 线程可以看到最新的值(其他线程或者普通的操作,导致主内存中此变量更新)
2.不保证原子性
多线程下,多行操作的执行不具有原子性,多线程可能会穿插进行

如何保证:
		使用lock,或者synchronized(不推荐)
		使用原子类,JUC.automic包下的类,如AutomicInteger等

3.禁止指令重排
由于内存屏障,保证特定的操作的执行顺序!
可以保证某些变量的内存可见性(利用这些特性volatile实现了可见性)

posted @ 2021-11-08 15:59  Wu1432551135  阅读(32)  评论(0)    收藏  举报