volatile关键字的说法错误的是()。
A: 能保证线程安全
B: volatile关键字用在多线程同步中,可保证读取的可见性
C: JVM保证从主内存加载到线程工作内存的值是最新的
D: volatile能禁止进行指令重排序
A: 能保证线程安全
B: volatile关键字用在多线程同步中,可保证读取的可见性
C: JVM保证从主内存加载到线程工作内存的值是最新的
D: volatile能禁止进行指令重排序
举一反三
- volatile关键字与synchronized关键字均不能保证原子性。
- Java中volatile本质是在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取;
- 同步代码块的作用是() A: 保证多线程访问数据的安全 B: 保证同步代码块中只有一个线程运行 C: 同步代码块可以避免线程的随机性 D: 同步代码块提高了线程的运行速度
- 下面关于volatile关键字的描述中,不正确的是( )。 A: 定义变量访问硬件模块的寄存器时必须用volatile关键字; B: 用volatile关键字定义的变量,编译时对该变量的访问不会被优化; C: 定义变量时没有用volatile关键字,那么有可能运行时发现该变量没有被定义; D: 最好定义任何变量时都加上volatile关键字。
- volatile仅能实现变量的修改可见性,不能保证原子性;而synchronized则可以保证变量的修改可见性和原子性