0
点赞
收藏
分享

微信扫一扫

高并发(3)---线程的状态和常用方法

程序员阿狸 2022-02-11 阅读 75

1、线程的运行原理

我们都知道虚拟机是由:堆、栈、方法区等组成,那么其中的栈内存是给谁使用的呢?

1)、每个线程启动后,虚拟机就会为其分配一块栈内存

2)、每个栈由多个栈帧(Frame)组成,对应的就是每次方法调用时所占用的内存

3)、每个线程只能有一个活动的栈帧,对应着当前正在执行的那个方法

线程上下文切换

因为如下的一些原因导致CPU不再执行当前的线程,转而执行另一个线程的代码

1)、线程的cpu时间片用完了

2)、垃圾回收,有更高优先级的线程需要运行

3)、线程自己调用了sleep、yield、wait、join、park、synchronized、lock等方法。

当线程上下文发生时,需要由操作系统保存当前线程的状态,并恢复另一个线程的状态,java中对应的概念就是程序计数器(program counter register),它的作用就是记住下一条jvm指令的执行地址,是线程私有的。

2、线程的状态

从java API层面来看,根据Thread.State枚举,线程分为6种状态

1)、新建状态(new)

创建了一个线程,但是还没有调用start()方法

如:通过Runnable接口创建一个线程类,new一个实例出来,线程就进入了初始状态

举报

相关推荐

0 条评论