CAS是一个特殊的cpu指令主要完成的是比较和交换
比较内存地址中的值是否和expected寄存器中的值相同,如果相同,就把swap寄存器中的值和address内存中的值进行交换(就是往内存中赋值)如果不相同就返回false。
基于CAS指令可以不加锁把多线程变成原子的,此过程不会产生加锁那种阻塞(无锁编程)
Java标准库给我们提供了原子类我们只就应用就好,例如:AtomicInteger类
来保证两个线程的原子性,还是会产生抢占式执行,但是它是原子的所以不怕。
CAS是一个特殊的cpu指令主要完成的是比较和交换
比较内存地址中的值是否和expected寄存器中的值相同,如果相同,就把swap寄存器中的值和address内存中的值进行交换(就是往内存中赋值)如果不相同就返回false。
基于CAS指令可以不加锁把多线程变成原子的,此过程不会产生加锁那种阻塞(无锁编程)
Java标准库给我们提供了原子类我们只就应用就好,例如:AtomicInteger类
来保证两个线程的原子性,还是会产生抢占式执行,但是它是原子的所以不怕。