sync是基于阻塞的锁的机制。1.被阻塞的线程优先级很高。2拿到锁的线程一直不释放怎么办?3.大量的线程竞争消耗CPU,同时带来死锁和其他安全
CAS的原理:
CAS(compare and swap),指令级别保证这是一个原子操作。
三个运算符:一个内存地址V,一个期望的值A,一个新值B。
基本思路:如果地址V上的值和期望的值A相等,就给地址V赋给新值B。如果不是,不做任何操作
循环(自旋)里不断的进行CAS操作。
CAS的问题:
1.ABA问题:
sync是基于阻塞的锁的机制。1.被阻塞的线程优先级很高。2拿到锁的线程一直不释放怎么办?3.大量的线程竞争消耗CPU,同时带来死锁和其他安全
CAS的原理:
CAS(compare and swap),指令级别保证这是一个原子操作。
三个运算符:一个内存地址V,一个期望的值A,一个新值B。
基本思路:如果地址V上的值和期望的值A相等,就给地址V赋给新值B。如果不是,不做任何操作
循环(自旋)里不断的进行CAS操作。
CAS的问题:
1.ABA问题: