Java多线程学习笔记
2021-04-12 18:42:09 1 举报
Java多线程学习笔记
作者其他创作
大纲/内容
修改为N
start()
L1
程序计数器PC Register
ALU
o.wait()t.join()LockSupport.park()lock.lock()
线程被调度器选中
RUNNABLE
yield()
L2
notify()notifyAll()LockSupport.unpark()lock.unlock()
Registers
Thread.sleep(time)o.wait(time)t.join(time)LockSupport.parkNanos()LockSupport.parkUntil()
时间轴
开始
判断当前值M是否和V相等
并发处理的顺序执行
L3
PC
线程状态切换
线程被挂起
并发处理的并行执行
虚拟机栈VM Stack
三级缓存
这里会出现ABA问题,有可能是其他线程修改后的V值解决办法:- 时间戳- 版本号
READY
相等
new
方法区Method Area
本地方法栈Native Method Stack
TIMED WAITING
BLOCKED
堆Heap
线程执行结束
本思维导图持续更新.....源码地址:https://github.com/GreyZeng/juc
获取当前值V
RUNNING
Java 线程共享区:方法区,堆独有区:虚拟机栈,本地方法栈,程序计数器
等待进入同步代码块的锁synchronized
并发处理的顺序执行与并发处理的并行执行
CAS and ABA
TERMINATED
时间结束
WAITING
不相等
博客地址:https://www.cnblogs.com/greyzeng/p/14176141.html
NEW
内存
获得锁
0 条评论
下一页