原子性、可见性、有序性

108 阅读1分钟

原子性(Atomicity)可见性(Visibility)有序性(Ordering)

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