synchronized的可见性和有序性原子
时间: 2023-12-07 15:44:48 浏览: 105
Java多线程中提到的原子性和可见性、有序性1
synchronized 关键字在 Java 中用于实现线程的同步,它主要包含两方面的作用:可见性和有序性原子性。
可见性指的是当一个线程修改了共享变量的值后,其他线程能够立即看到这个修改。使用 synchronized 关键字修饰的代码块或方法,会确保在同一时间只有一个线程可以执行该代码块或方法。当一个线程进入 synchronized 代码块或方法时,它会获取对象的锁,其他线程必须等待该线程释放锁后才能执行 synchronized 代码块或方法。因此,对共享变量的修改都是在持有锁的线程释放锁之后才可见的。
有序性原子性指的是在多线程环境下,一系列操作要么全部执行,要么完全不执行。当一个线程执行 synchronized 代码块或方法时,它会对共享变量的操作具有原子性,即其他线程无法在该线程持有锁期间修改共享变量。这种原子性保证了共享变量的操作是有序的,不会出现数据不一致的情况。
总结来说,synchronized 关键字保证了代码块或方法的原子性和可见性。它通过互斥锁的机制确保了同一时间只有一个线程可以执行同步代码块或方法,并且对共享变量的修改对其他线程可见。这样可以避免多线程环境下的数据竞争和不一致性问题。
阅读全文