JVM 的 CAS,即 Compare And Swap,是一种并发编程中常用的保证原子性的技术。
通俗地讲,CAS 用于在多线程环境下对共享变量的值进行原子操作,即多个线程同时访问同一个共享变量,但只有一个线程能修改这个变量的值,并且这个操作是原子的,不会被其他线程打断。
具体来说,CAS 操作包含如下三个参数:共享变量 V、期望值 A 和新值 B。只有在共享变量 V 的值等于期望值 A 的情况下,才会将共享变量 V 的值修改为新值 B。如果在操作过程中发现共享变量 V 的值已经被其他线程改变,那么 CAS 操作不会成功。此时,需要重新获取最新的共享变量 V 的值,然后再尝试 CAS 操作,直到操作成功为止。
使用 CAS 操作可以避免多个线程同时修改同一个共享变量时产生的问题,保证了数据的一致性。在 Java 并发包中,AtomicInteger、AtomicLong 等原子类都使用了 CAS 技术,保证了其操作的原子性。
需要注意的是,CAS 操作可能会存在一些问题,例如ABA问题等。但是,通过解决这些问题并结合其他并发技术,CAS 依然是一种比较高效的保证原子操作的技术之一。
标签:变量,CAS,原子,线程,JVM,操作,共享,通俗 From: https://www.cnblogs.com/chaowolf/p/17302180.html