linux kvm查看线程状态,kvm线程-005-线程状态-THREAD_JUST_BORN

在kvm内部定义了线程状态,如下:

enum {

THREAD_JUST_BORN = 1, /* 还没有启动*/

THREAD_ACTIVE = 2, /* 当前正在运行,或者在等待运行的队列中*/

THREAD_SUSPENDED = 4, /* 等待monitor或者alarm */

THREAD_DEAD = 8, /* 线程退出 */

THREAD_MONITOR_WAIT = 16, // 等待锁

THREAD_CONVAR_WAIT = 32, // 等待唤醒

THREAD_DBG_SUSPENDED = 64 // debug使用

} state; // 线程状态定义

1

2

3

4

5

6

7

8

9

本文首先介绍THREAD_JUST_BORN. THREAD_JUST_BORN是在BuildThread方法中设置的:

newThread->state = THREAD_JUST_BORN;

1

而关于该方法在kvm启动流程-006 中详细介绍.

而BuildThread的调用点有两处:

在InitializeThreading方法中调用,这点在kvm启动流程-006 中有介绍.

在getVMthread中调用,其代码如下:

THREAD getVMthread(JAVATHREAD_HANDLE javaThreadH)

{

/* Create the VM-level thread structure if necessary */

THREAD VMthread = unhand(javaThreadH)->VMthread;

if (!VMthread) {

VMthread = BuildThread(javaThreadH);

}

return VMthread;

}

1

2

3

4

5

6

7

8

9

而关于 getVMthread方法的调用点有三处:

Java_java_lang_Thread_start(也就是Thread.start()方法)

Java_java_lang_Thread_setPriority0(也就是Thread.setPriority() 方法)

Java_java_lang_Thread_interrupt0(也就是Thread.interrupt()方法)

那么,哪个是首先调用 getVMthread方法的呢?

答案是 Java_java_lang_Thread_setPriority0,因为该方法是在线程的方法中调用的.如下:

public Thread() {

init(null, "Thread-" + nextThreadNum());

}

private void init(Runnable target, String name) {

Thread parent = currentThread();

this.target = target;

this.name = name.toCharArray();

this.priority = parent.getPriority();

setPriority0(priority);

}

private native void setPriority0(int newPriority);

1

2

3

4

5

6

7

8

9

10

11

12

13

因此会在方法中最终调用Java_java_lang_Thread_setPriority0方法,其代码如下:

void Java_java_lang_Thread_setPriority0(void)

{

int priority = popStack();

THREAD VMthread;

START_TEMPORARY_ROOTS(http://www.amjmh.com)

DECLARE_TEMPORARY_ROOT(JAVATHREAD, javaThread,

popStackAsType(JAVATHREAD)); // 获得当前线程对象

// 设置优先级

javaThread->priority = (priority > MAX_PRIORITY ? MAX_PRIORITY :

(priority < MIN_PRIORITY ? MIN_PRIORITY : priority));

VMthread = getVMthread(&javaThread); // 获得vm线程

VMthread->timeslice = javaThread->priority * TIMESLICEFACTOR; // 分配时间片

END_TEMPORARY_ROOTS

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

总结

THREAD_JUST_BORN 是线程新建的状态。

关于后续状态,后文介绍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解VirtualBox虚拟机网络环境解析和搭建-NAT、桥接、Host-Only、Internal、端口映射

原文链接&#xff1a;http://www.jb51.net/article/98575.htm -------------------------------------------------- 本文以VirtualBox为例 如果出现主机无法ping通虚拟机的情况&#xff0c;请首先确认虚拟机防火墙已关闭。 一、NAT模式 特点&#xff1a; 1、如果主机可以上网…

os.popen read()报编码错误_数据科学家易犯的十大编码错误,你中招了吗?

选自 Medium作者&#xff1a;Norm Niemer机器之心编译参与&#xff1a;李诗萌、王淑婷数据科学家比软件工程师擅长统计&#xff0c;又比统计学家擅长软件工程。听起来牛逼轰轰&#xff0c;事实却是&#xff0c;许多数据科学家有统计学背景&#xff0c;却没有什么软件工程方面的…

linux怎么添加工作组,linux 用户与工作组

在linux 里面&#xff0c;用户的编号UID &#xff0c;也就是用户的ID号。工作组的编号为GID 也就是工作组的ID 号 。1、用户的分类超级用户&#xff1a;root用户&#xff0c;系统安装过程中自动创建&#xff0c;UID 为0。普通用户&#xff1a;操作权限受到限制的用户id在 500-6…

MySQL5.7.12新密码登录方式及密码策略

原文链接&#xff1a;http://www.cnblogs.com/jonsea/p/5510219.html --------------------------------------------------------------------------- 松门一枝花补充 最简单的方法&#xff1a; 1、配置文件中把密码策略关了。本文中间部分有介绍。 2、重启服务 3、用my…

聚类分析在用户行为中的实例_聚类分析案例之市场细分

聚类是将数据分类到不同的类或者簇这样的一个过程&#xff0c;所以同一个簇中的对象有很大的相似性&#xff0c;而不同簇间的对象有很大的相异性。从统计学的观点看&#xff0c;聚类分析是通过数据建模简化数据的一种方法。传统的统计聚类分析方法包括系统聚类法、分解法、加入…

linux 编译system.img,android生成sysytem.img的命令过程

Fromhttp://xianghuaclm.blog.163.com/blog/static/6668783201110221486240/使用#file system.img输出&#xff1a;system.img: Linux rev 0.0 ext2 filesystem data,UUID4eb0489c-647d-49d8-9111-94657b5fd342, volume name"system"。然而本人使用命令#mkyaffs2imag…

Hive的hiveserver2后台开启和关闭

前提&#xff1a;hive/bin配置了环境变量。如果没有配置&#xff0c;cd到 hive目录下的bin里&#xff0c;再执行。 开启命令&#xff1a; nohup hive --service hiveserver2 & 产生的日志&#xff1a; 默认在&#xff1a; 用户文件夹里 [rootmaster ~]# ll total 80 …

记一次,jvm 内存溢出

1、什么是内存泄漏内存泄漏是指&#xff0c;有未被释放的java对象&#xff0c;一直停留在内存中。GCRoot 无法追踪到此对象&#xff0c;导致此对象无法被回收。 2、什么是内存溢出内存溢出是指&#xff0c;java程序创建对象需要内存&#xff0c;但是却没有内存可用了&#xff0…

ebnf范式_使用Scala基于词法单元的解析器定制EBNF范式文法解析

前言近期在做Oracle迁移到Spark平台的项目上遇到了一些平台公式翻译为SparkSQL(on Hive)的需求&#xff0c;而Spark采用亲妈语言Scala进行开发。下面是个意外&#xff0c;被论文查重了,移步至我的Leanote博客查看点我&#xff0c;先乱码一段时间[分后&#xff0c;拟使中的EB式&…

钻石指标和完美的计算

钻石的高度计算公式为&#xff1a;钻石的高度直径的三次方&#xff08;单位毫米&#xff09;0.00366(允许有0.03克拉的误差)例如&#xff0c;0.5克拉的钻石直径是5.01毫米&#xff0c;则它的高为&#xff1a;5.01*5.01*5.01*0.003660.46说明0.5克拉的钻石直径只有0.46克拉钻石的…

linux开机自动ZFS,linux – 为什么重新启动导致我的ZFS镜像的一面成为UNAVAIL?

我最近刚刚将批量数据存储池(ZFS OnLinux 0.6.2,Debian Wheezy)从单设备vdev配置迁移到双向镜像vdev配置.之前的池配置是&#xff1a;NAME STATE READ WRITE CKSUMakita ONLINE 0 0 0ST4000NM0033-Z1Z1A0LQ ONLINE 0 0 0在重新启动完成后一切都很好(我在重新启动完成后启动了一…

华为交换机默认vlan都是通的吗_【思唯网络学院】华为交换机常用的三种vlan划分方法...

端口类型在学习划分vlan前&#xff0c;必须要了解华为交换机的端口类型&#xff0c;以及他们的使用方法&#xff0c;因为端口的类型在实际配置中是必须会用到的&#xff0c;因为下面的vlan划分会用到。1、Access类型端口执行命令port default vlan vlan-id&#xff0c;将端口加…

Spark应用日志级别设置

Spark-core包设置默认的日志级别为info&#xff0c;所以我们才看到一大堆日志信息。 开发的时候&#xff0c;把print的日志掩盖了。 方法一&#xff1a; 代码中设置日志级别 JavaSparkContext contextnew JavaSparkContext(conf); context.setLogLevel("warn"); 方…

linux 恢复操作系统,如何恢复Linux操作系统的GRUB引导程?

先使用一张修复盘进入grub&#xff0c;或者利用其他linux恢复盘等等进入linux系统&#xff0c;然后进入grub控制台。总之就是想尽办法进入一个控制台就是了。然后准备引导进入硬盘上的Linux系统。如下&#xff1a;  grub> root (hd0,10)  grub> kernel /boot/vmlinuz…

Centos 7初始化脚本

今天跟大家分享一个我自己写的Linux初始化脚本&#xff0c;自认为写的不是很好。希望看到这篇文章的你&#xff0c;能暂时停留下你的脚步&#xff0c;给些修改意见&#xff0c;或者有什么需要补充的地方都可以提出来&#xff0c;大家共同进步&#xff0c;谢谢&#xff01;此脚本…

Hive-sql与SQL的区别

总体一致&#xff1a; Hive-sql与SQL基本上一样&#xff0c;因为当初的设计目的&#xff0c;就是让会SQL不会编程MapReduce的也能使用Hadoop进行处理数据。 因此&#xff0c;大胆使用SQL的&#xff0c;如果遇到不对的&#xff0c;再查。 区别&#xff1a; Hive没有delete和u…

python闰年多一天_记一个 python datetime 闰年问题

python中datetime是比较常用的&#xff0c;平时用起来也没什么问题&#xff0c;但是今天2020年2月29日服务器却开始报错了&#xff0c;这里有个平时难以注意的坑服务器上跑的是新浪网的爬虫&#xff0c;抓取的页面信息中带有日期 XX月XX日&#xff0c;需要strfptime转化一下&am…

linux find 按类型查找,Linux find查找find命令详解

玩蛇网推荐图文教程&#xff1a;python 列表Linux命令有很多&#xff0c;今天要介绍的是常用的基础命令中的find命令。find是Linux系统管理员所喜爱用的必备工具命令之一&#xff0c;它的作用是可以很轻松地找到你想要的文件&#xff0c;一个命令就可以在众多文件中找到你的目标…

window安装gcc编译器

在使用 GraphLab Create 时&#xff0c;导入包失败&#xff0c;提示libs没有的导入&#xff0c;而这些libs的编译是需要gcc。 1、访问&#xff1a;http://www.mingw.org/ 下载。 2、双击安装 3、安装好后会弹出下面的组件安装界面 3、找到mingw32-gcc-g&#xff08;注意cl…

视频AI,助力体育赛事转播走进智能时代

摘要&#xff1a;2018俄罗斯世界杯经过近20天的激战&#xff0c;已经进入到最关键的阶段。本次赛事除了精彩纷呈的比赛之外&#xff0c;还加入很多高科技的元素&#xff0c;例如门线、VAR技术等等。让本届世界杯成为科技含量最高的一届世界杯。2018俄罗斯世界杯经过近20天的激战…