
CAS
一只渣渣
个人记录一些自己的工作所得,和学习中所遇见的问题以及浏览到的知识,如果有小伙伴看到我记录的文章欢迎指正出不足的地方,让我们一起进步,做一只悲催的程序猿(*^▽^*)
展开
-
并发系列—synchronized与lock(CAS)比较
大量线程争抢资源、髙耗时的环境下synchronized效率更高 synchronized在重量锁时会将部分线程放入睡眠队列,不消耗cpu 少量线程争抢资源、少耗时的环境下CAS效率更高 CAS等待期间一直消耗cpu ...原创 2020-03-23 23:21:09 · 374 阅读 · 0 评论 -
并发系列—CAS原理实现初识
在JDK1.5开始,AtomicInteger中就基于CAS原理做了相关操作。 public static void main(String[] args) throws Exception{ //初识值为0 AtomicInteger atomicInteger = new AtomicInteger(); //查看当前对象的值 ...原创 2020-03-22 18:14:50 · 143 阅读 · 0 评论 -
并发系列—CAS之ABA问题
上篇文章通过自旋锁保证了数据的准确性,现在我们讨论一个问题。 【PS:看这个问题前需要确保已经明白自旋锁的执行原理】 业务:获取对象名称,根据名称对数据进行相关处理。 如图: 【上图我们发现并发时使用CAS处理业务可能会因多条线程同时操作导致某些业务被重复操作,出现ABA问题】 QA:如何解决CAS的ABA问题? 思路:使用版本号控制(例:mysql的乐观锁) 定义一个字段用于存...原创 2020-03-22 16:12:35 · 228 阅读 · 0 评论 -
并发系列—CAS初识
CAS(Compare And Swap)锁的一种,可以称为自旋锁。 与我们知道的synchronized、lock其本质区别是CAS并没有像其他两种一样真正将这个对象锁住而是通过不断获取原有值然后进行比较的方式去保证数据的正确性,如其名称的直译【比较与交换】。 例:3个线程同时操作一个对象的属性(age)。 age=0;现在3个线程都对age进行操作(每次对当前值+1,每个线程都是操作1...原创 2020-03-22 00:13:41 · 231 阅读 · 0 评论