java并发
PitBXu
看山是山,看山不是山,看山还是山
展开
-
Java 线程&锁(三)
public static void shortSleep(Duration duration) { try { TimeUnit.MILLISECONDS.sleep(duration.toMillis()); } catch (InterruptedException e) { e.printStackTrace(); } }synchronized问题一:synchronized 锁的...原创 2020-07-23 19:58:02 · 157 阅读 · 0 评论 -
Java 线程&锁(一)
摘要:锁的本质是什么CAS如何实现?如何处理 ABA 问题互斥锁:同一时刻,只能有一个线程持有锁原始的线程通讯 -> o.wait(); o.notify(); 在调用 o.wait(); 时,线程会进入等待队列;CASCAS = compareAndSet/compareAndSwap - 自旋锁: 失败时候重试自旋锁引发的 ABA 问题:int m = 0;// 线程①取 m 值运算,经过运算后将 m 更新为 1, 更新之前会判断 m 是否仍然为 0, 如果为0, 则将 .原创 2020-07-03 17:31:46 · 2958 阅读 · 0 评论 -
悲观锁与乐观锁(CAS实现)
CAS乐观锁-悲观锁悲观锁与乐观锁悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会 阻塞 直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。再比如Java里面的同步原语 synchronized 关键字的实现也是悲观锁。乐观锁:顾名思义,就是很乐观,每次...原创 2019-03-25 10:29:43 · 820 阅读 · 0 评论