线程-基础-图解wait()、notify()、join()源码
文章目录
前言
这一篇我们主要是对wait()、notify()、join()进行图解,可能有些粗糙,不足之处多多指出。
提示:以下是本篇文章正文内容
一、wait()方法
我们先对Object.wait()进行一波分析。
接着上一篇留下的问题
- 为什么调用Object.wait必须持有对象锁?
- Object.wait()被挂起后,是否会释放当前锁,让出CPU?
我们先来回答第一个问题
通过锁的原理,知道javap生成的字节码包含"monitorenter" 和"monitorexit",通过monitor,我们才能进行后续的操作,等一下我们打开源码一起看下,这里先不对锁进行扩展,我们先知道有这么一个东西就行。
1.先看下monitor的实现
HotSpot虚拟机中,monitor采用ObjectMonitor 实现
//ObjectMonitor的对象的结构体
ObjectMonitor::
ObjectMonitor() {
_heade