原子性(Atomicity) 、可见性(Visibility)和有序性(Ordering) 。
- 原子性: 原子性是指一个操作是不可中断的。即使在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程所干扰。在 Java 中,使用
synchronized关键字、Lock接口等机制可以保证代码块的原子性。 - 可见性: 可见性是指当一个线程修改了共享变量的值,其他线程能够立即看到修改后的值。在 Java 中,使用
volatile关键字可以保证共享变量的可见性,也可以通过使用锁机制(如synchronized或Lock)来确保可见性。 - 有序性: 有序性是指程序执行的顺序按照代码的先后顺序执行。在多线程环境下,由于编译器的优化和指令重排序的存在,程序执行的顺序可能与编写代码时的顺序不一致。使用
volatile关键字可以禁止指令重排序优化,从而保证有序性。