锁
初心江湖路
多学一分增一分。
展开
-
wait、notify、notifyAll、sleep、yeild
一、wait、notify、notifyAll每个Java对象,除了有一个与之相关的 monitor ,还有一个与之对应的 wait 集合,这个集合中装的便是在该对象上的等待线程。在很多源码中,我们都看到不管是 wait 还是 notify 亦或是 notifyAll,其调用全是在该对象的synchronized同步语句块中。这是为什么?1、首先,我们很多地方都能找到 wait/notify...原创 2020-03-06 22:55:25 · 250 阅读 · 0 评论 -
CAS原理及其优缺点、总线锁、缓存锁
一、CAS的概念Compare And Swap (比较交换),一种无锁原子算法,是一种乐观锁,用于原子性的更新变量。二、实现原理CAS靠硬件实现,是一条CPU的原子指令,基于汇编指令cmpxchg实现,其作用是让CPU先比较两个值是否相等,然后原子性地更新某个内存地址的值。三、具体内容对于一个共享变量,如果某个线程想要通过CAS修改它的值,会先将该变量的当前值和期望值做比较,如果和期望...原创 2019-11-08 20:14:55 · 6222 阅读 · 1 评论 -
JVM synchronized 详细探究
首先,同步在JVM中是通过monitor进入和monitor退出来实现的。1、synchronized 方法 对于synchronized方法,同步作为方法调用和返回的一部分被隐式执行,并不是使用monitorenter和monitorexit来实现方法同步。而是通过运行时常量池中方法对应的ACC_SYNCHRONIZED标志来实现同步。1.1 synchronized 方法怎么被识别?...原创 2019-08-15 16:47:04 · 208 阅读 · 0 评论