-
synchronized关键字,用于加锁,volatile只能保持变量的线程可见性,通常适用于一个线程写,多个线程读的场景
-
不能,volatile关键字只能保证线程可见性,不能保证原子性
-
volatile防止指令重排。在DCL中,防止高并发情况下,指令重排造成的线程安全问题
指令重排是指:CPU为了提高性能,会把原来两行指令的执行顺序颠倒,单线程的指令重排是交换顺序后不影响结果
指令重排是指:CPU为了提高性能,会把原来两行指令的执行顺序颠倒,单线程的指令重排是交换顺序后不影响结果