Thread.start() run()

Thread.start() & run()

public static void main(String[] args) {  new Thread(new Runnable() {@Overridepublic void run() {System.out.println("2432");}}).start();
}public class Thread implements Runnable {//通过构造方法调用init方法,在init方法中赋值private Runnable target;//target赋值过程public Thread(Runnable target) {init(null, target, "Thread-" + nextThreadNum(), 0);}private void init(ThreadGroup g, Runnable target, String name,long stackSize) {init(g, target, name, stackSize, null, true);}private void init(ThreadGroup g, Runnable target, String name,long stackSize, AccessControlContext acc,boolean inheritThreadLocals) {...this.target = target;...}//调用Runnable接口实现类中的run()@Overridepublic void run() {if (target != null) {target.run();}}/** start()方法中并没有调用run(),run()为什么能执行呢?* 当前代码是在main线程中执行,如果直接调用run()那就不是新启线程了。** 当调用Thread对象的start方法后,它的内部调用start0方法。* 接着通过JNI技术调用虚拟机里用C++编写的方法,在该方法中会创建JavaThread对象。* 在其构造方法中调用系统函数pthread_create创建内核线程。* 最终在内核线程中执行Thread对象的run方法。*/public synchronized void start() {group.add(this);boolean started = false;try {start0();started = true;} finally {try {if (!started) {group.threadStartFailed(this);}} catch (Throwable ignore) {/* do nothing. If start0 threw a Throwable thenit will be passed up the call stack */}}}//最终通过hotspot调用C++通过系统函数创建线程private native void start0();}

hotspot结论参考:

Thread类的start()方法创建线程的底层分析_thread.start()-CSDN博客

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

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

相关文章

Springboot+vue的商业辅助决策系统的设计与实现(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频: Springbootvue的商业辅助决策系统的设计与实现(有报告)。Javaee项目,springboot vue前后端分离项目 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的商业辅助决策系统的设计与实现,采…

Leetcode210. 课程表 II

Every day a Leetcode 题目来源:210. 课程表 II 解法1: 什么是拓扑排序? 我们考虑拓扑排序中最前面的节点,该节点一定不会有任何入边,也就是它没有任何的先修课程要求。当我们将一个节点加入答案中后,我…

html5新增标签+css3新增标签

新增标签 一.html5新增标签1.语义化标签2.多媒体标签(1)视频video(2)音频audio(3).总结 3.input属性4.表单属性 二.css3新增选择器1.新增选择器(1)属性选择器(2&#xff…

Ubuntu进入python时报错:找不到命令 “python”,“python3” 命令来自 Debian 软件包 python3

一、错误描述 二、解决办法 进入”/usr/bin”目录下,查看/usr/bin目录中所有与python相关的文件和链接: cd /usr/bin ls -l | grep python 可以看到Python3指向的是Python3.10,而并无指向python3的软连接 只需要在python与python3之间手动…

微服务治理:Nacos, Zookeeper, consul, etcd, Eureka等 5 个常用微服务注册工具对比

当然!下面是 Nacos、Zookeeper、Consul、etcd 和 Eureka 这五个常用的注册中心的详细对比: Nacos: Nacos 是由 HashiCorp 开发的高度可扩展和可靠的服务发现、配置管理和服务网格解决方案。它的架构基于一组服务器代理形成的共识组和与服务器…

Github配置SSH免密认证

以Ubuntu Server为例 生成SSH ssh-keygen -t ed25519 -C "your_emailexample.com" 如果系统不支持Ed25519算法,使用旧的命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 根据提示生成公私钥文件,记下位置…

前端学习、CSS

CSS可以嵌入到HTML中使用。 每个CSS语法包含两部分,选择器和应用的属性。 div用来声明针对页面上的哪些元素生效。 具体设置的属性以键值对形式表示,属性都在{}里,属性之间用;分割,键和值之间用:分割。 因为CSS的特殊命名风格…

MySQL 常用优化方式

MySQL 常用优化方式 sql 书写顺序与执行顺序SQL设计优化使用索引避免索引失效分析慢查询合理使用子查询和临时表列相关使用 日常SQL优化场景limit语句隐式类型转换嵌套子查询混合排序查询重写 sql 书写顺序与执行顺序 (7) SELECT (8) DISTINCT <select_list> (1) FROM &…

ctf_show笔记篇(web入门---php特性)

目录 php特性 89&#xff1a;直接数组绕过preg_match当遇到数组时会直接报错输出0 90&#xff1a;这里利用了intval的特性 91&#xff1a;这里需要细节一点 92-93&#xff1a;这两题的方法很多可以发散思维 94&#xff1a;还是利用小数绕过例如4476.0 95&#xff1a;这里…

HTML和CSS (前端共三篇)【详解】

目录 一、前端开发介绍 二、HTML入门 三、HTML基础标签 四、CSS样式修饰 五、HTML表格标签 六、HTML表单标签 一、前端开发介绍 web应用有BS和CS架构两种&#xff0c;其中我们主要涉及的是BS架构。而BS架构里&#xff0c;B&#xff08;Browser浏览器&#xff09;是客户端的…

蓝桥杯(3.1)

92. 递归实现指数型枚举 import java.util.Scanner;public class Main {static int N 16;static int n;static int[] st new int[N]; public static void dfs(int u) {if(u > n) {for(int i1;i<n;i) {if(st[i] 1)System.out.print(i" ");}System.out.print…

798. 差分矩阵

Problem: 798. 差分矩阵 文章目录 思路解题方法复杂度Code 思路 这是一个差分矩阵的问题。差分矩阵是一种用于处理区间修改问题的数据结构&#xff0c;它可以在O(1)的时间复杂度内完成区间的修改操作&#xff0c;然后在O(n)的时间复杂度内完成所有元素的更新操作。 在这个问题中…

【k8s管理--两种方式安装prometheus】

1、k8s的监控方案 1.1 Heapster Heapster是容器集群监控和性能分忻工具&#xff0c;天然的支持Kubernetes和CoreOS。 Kubernetes有个出名的监控agent–cAdvisor。在每个kubernetes Node上都会运行cAdvisor&#xff0c;它会收集本机以及容器的监控数(cpu,memory,filesystem,ne…

conda目录迁移

conda默认安装在系统目录&#xff0c; 但随着使用&#xff0c; 占用的空间越来越大&#xff0c; 需要迁移到其他目录。 假设原来conda安装在/home/leo/anaconda3目录&#xff0c; 现在要迁移到/data路径。 方法是&#xff1a; 1 移动文件位置 mv /home/leo/anaconda3 /dat…

python笔记_键盘输入

例&#xff1a;从控制台接收员工信息 name input("输入姓名:") age input("输入年龄:") id input("输入id:") print("name",name) print("age",age) print("id",id) ——> 输入姓名: 1&#xff0c;接收到的…

Ubuntu将c++编译成.so文件并测试

一、准备cpp和h文件 创建test.cpp 在cpp中定义相加的函数funcAdd&#xff0c;给出函数的细节代码 #include <iostream> using namespace std;int funcAdd(int x, int y) {return xy; }创建test.h 在h中声明定义的函数&#xff0c;不需要任何细节 #ifndef __TEST__ #…

LeetCode 热题 HOT 100(P1~P10)

&#x1f525; LeetCode 热题 HOT 100 这里记录下刷题过程中的心得&#xff0c;其实算法题基本就是个套路问题&#xff0c;很多时候你不知道套路或者模板&#xff0c;第一次尝试去做的时候就会非常懵逼、沮丧和无助。而且就算你一时理解并掌握了&#xff0c;过一段时间往往会绝…

苹果 Vision Pro零售部件成本价格分析

苹果公司发布的全新头戴式显示器 Apple Vision Pro 虽然售价高达3499美元&#xff0c;但其制造成本同样不菲&#xff0c;根据研究机构 Omdia 的估计&#xff0c;该头显仅零部件成本就超过了1500美元。这款头显的总零部件成本估计为1542美元&#xff0c;这还并不包括研发、包装、…

腾讯云服务器CVM_云主机_云计算服务器_弹性云服务器

腾讯云服务器CVM提供安全可靠的弹性计算服务&#xff0c;腾讯云明星级云服务器&#xff0c;弹性计算实时扩展或缩减计算资源&#xff0c;支持包年包月、按量计费和竞价实例计费模式&#xff0c;CVM提供多种CPU、内存、硬盘和带宽可以灵活调整的实例规格&#xff0c;提供9个9的数…

【算法】顺时针打印矩阵(图文详解,代码详细注释

目录 题目 代码如下: 题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则打印出数字:1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10 这一道题乍一看,没有包含任何复杂的数据结构和…