@@ -104,8 +104,8 @@ public class MultiThread {
104104
105105### 2.3. 虚拟机栈和本地方法栈为什么是私有的?
106106
107- - ** 虚拟机栈:** 每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,就对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。
108- - ** 本地方法栈:** 和虚拟机栈所发挥的作用非常相似,区别是: ** 虚拟机栈为虚拟机执行 Java 方法 (也就是字节码)服务,而本地方法栈则为虚拟机使用到的 Native 方法服务。** 在 HotSpot 虚拟机中和 Java 虚拟机栈合二为一。
107+ - ** 虚拟机栈:** 每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,就对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。
108+ - ** 本地方法栈:** 和虚拟机栈所发挥的作用非常相似,区别是: ** 虚拟机栈为虚拟机执行 Java 方法 (也就是字节码)服务,而本地方法栈则为虚拟机使用到的 Native 方法服务。** 在 HotSpot 虚拟机中和 Java 虚拟机栈合二为一。
109109
110110所以,为了** 保证线程中的局部变量不被别的线程访问到** ,虚拟机栈和本地方法栈是线程私有的。
111111
@@ -152,7 +152,7 @@ Java 线程在运行的生命周期中的指定时刻只可能处于下面 6 种
152152
153153![ RUNNABLE-VS-RUNNING] ( https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-3/RUNNABLE-VS-RUNNING.png )
154154
155- 当线程执行 ` wait() ` 方法之后,线程进入 ** WAITING(等待)** 状态。进入等待状态的线程需要依靠其他线程的通知才能够返回到运行状态,而 ** TIME_WAITING(超时等待)** 状态相当于在等待状态的基础上增加了超时限制,比如通过 ` sleep(long millis) ` 方法或 ` wait(long millis) ` 方法可以将 Java 线程置于 TIMED WAITING 状态。当超时时间到达后 Java 线程将会返回到 RUNNABLE 状态。当线程调用同步方法时,在没有获取到锁的情况下,线程将会进入到 ** BLOCKED(阻塞)** 状态。线程在执行 Runnable 的` run() ` 方法之后将会进入到 ** TERMINATED(终止)** 状态。
155+ 当线程执行 ` wait() ` 方法之后,线程进入 ** WAITING(等待)** 状态。进入等待状态的线程需要依靠其他线程的通知才能够返回到运行状态,而 ** TIME_WAITING(超时等待)** 状态相当于在等待状态的基础上增加了超时限制,比如通过 ` sleep(long millis) ` 方法或 ` wait(long millis) ` 方法可以将 Java 线程置于 TIMED WAITING 状态。当超时时间到达后 Java 线程将会返回到 RUNNABLE 状态。当线程调用同步方法时,在没有获取到锁的情况下,线程将会进入到 ** BLOCKED(阻塞)** 状态。线程在执行 Runnable 的` run() ` 方法之后将会进入到 ** TERMINATED(终止)** 状态。
156156
157157## 7. 什么是上下文切换?
158158
0 commit comments