Lock --悲观锁和乐观锁

1.synchronized   悲观锁(独占锁)

   问题:1.多线程环境下,加锁,释放锁导致导致比较多的上下文切换和调度延迟,影响性能

           2.一个线程持有锁会导致其他需要该锁的线程挂起

    3.线程优先级倒置。线程优先级高的线程等待线程优先级低的线程释放锁

2.乐观锁 : 假设没有冲突去进行操作,如果因为冲突失败则重试,直到成功

     java.util.concurrency使用乐观锁,具体使用的是CAS(compare and swap )

     CAS是项乐观锁技术,当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,

     而其它线程都失败,失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次尝试。CAS有3个操

     作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内      存值V相同时,将内存值V修改为B,否则什么都不做。 

   问题: ABA问题

  

原文地址:https://www.cnblogs.com/fight-tao/p/5295372.html