请说明Thread类中run和start的区别,从方法的区别,及运行结果的区别分别说明
方法本身的区别
start() 方法:
run()方法是Thread类的一个普通方法,它包含了线程要执行的代码。- 当你直接调用一个线程的
run()方法(如myThread.run()),你实际上是在当前线程(通常是主线程)中执行run()方法中的代码,而不是创建一个新的线程来执行。run()方法没有特殊的线程管理功能,它只是简单地执行其中的代码。
run() 方法:
start()方法是Thread类的一个特殊方法,用于启动一个新线程。- 当你调用一个线程的
start()方法(如myThread.start()),Java虚拟机(JVM)会为该线程分配必要的系统资源,并创建一个新的执行线程。- 在新线程中,JVM会自动调用该线程的
run()方法。因此,start()方法内部会调用run()方法,但这个过程是由JVM控制的,而不是直接由调用start()方法的线程控制。start()方法具有线程管理功能,它确保线程的正确启动和执行。
运行结果的区别
使用 start() 方法:
- 当你调用一个线程的
start()方法时,它会创建一个新的线程来执行run()方法中的代码。- 这意味着,
run()方法中的代码将在新的线程中异步执行,不会阻塞当前线程。- 这使得你可以同时执行多个任务,提高程序的并发性和响应性。
直接调用 run() 方法:
- 当你直接调用一个线程的
run()方法时,代码会在当前线程中同步执行,而不是在新的线程中。- 这意味着,如果你的代码中有耗时的操作或需要等待的操作(如I/O操作),它会阻塞当前线程,直到操作完成。
总结:Java中,你应该始终通过调用
start()方法来启动一个新线程,而不是直接调用run()方法。这是因为start()方法会正确地管理线程的创建和执行,而直接调用run()方法则只是在当前线程中执行代码,无法实现多线程并发执行的效果。
相关文章:
请说明Thread类中run和start的区别,从方法的区别,及运行结果的区别分别说明
方法本身的区别 start() 方法: run()方法是Thread类的一个普通方法,它包含了线程要执行的代码。当你直接调用一个线程的run()方法(如myThread.run()),你实际上是在当前线程(通常是主线程)中执行…...
MySQL:概念、逻辑与物理结构设计详解
MySQL:概念、逻辑与物理结构设计详解 一、引言 MySQL是一个流行的开源关系型数据库管理系统(RDBMS),广泛应用于各种规模和类型的应用程序中。在设计和实现一个MySQL数据库时,理解其基本概念、逻辑结构设计和物理结构…...
《昇思 25 天学习打卡营第 6 天 | 函数式自动微分 》
《昇思 25 天学习打卡营第 6 天 | 函数式自动微分 》 活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp 签名:Sam9029 函数式自动微分 自动微分是深度学习中的一个核心概念,它允许我们自动计算模型参数的梯度,…...
刷题——二叉树的中序遍历
双指针法 void midorder(vector<int>&res, TreeNode* root){if(root NULL) return;midorder(res, root->left);res.push_back(root->val);midorder(res, root->right);}vector<int> inorderTraversal(TreeNode* root) {// write code herevector<…...
圈复杂度.
圈复杂度是衡量代码的重要标准 配置: eslint里面:rules:complexity:[error,10]...
分类预测 | Matlab实现GA-XGBoost遗传算法优化XGBoost的多特征分类预测
分类预测 | Matlab实现GA-XGBoost遗传算法优化XGBoost的多特征分类预测 目录 分类预测 | Matlab实现GA-XGBoost遗传算法优化XGBoost的多特征分类预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现GA-XGBoost遗传算法优化XGBoost的多特征分类预测,…...
说说 golang 中的接口和反射
1、接口 1.1 类型 Golang 中的接口是一组方法的签名,是实现多态和反射的基础。 type 接口名 interface {method1(参数列表) 返回值列表method2(参数列表) 返回值列表 }不同于 Java 语言,使用 implements 关键字显示的实现接口。Golang 接口的实现都是…...
小程序注册
【 一 】小程序注册 微信公众平台 https://mp.weixin.qq.com/ https://mp.weixin.qq.com/注册 邮箱激活 小程序账户注册 微信小程序配置 微信小程序开发流程 添加项目成员 【 二 】云服务 lass 基础设施服务(组装机) 你买了一大堆的电脑配件&#x…...
工作记录2
1. 要实现y轴超出部分滚动的效果,可以这样写 <div style"max-height: 384px; overflow-y: auto;"> </div> 2. 当后端接口还没好的时候,可以自己模拟一下接口返回的数据 export const getCommodityDetail (id) > Promise.re…...
linux挂载硬盘(解决linux不显示硬盘问题)
目录 1.查看系统有几块硬盘2.查看挂载情况3.格式化硬盘4.创建挂载目录用于挂载硬盘5.将硬盘挂载到指定的挂载目录6.随系统自启动挂载查看配置文件,看是否已经把这条命令加入配置 帮同门解决挂载失败问题记录 参考视频:只要6步!Linux系统下挂载…...
运输标签扫描仪可简化运输和接收任务
Dynamic Web TWAIN 是一个专为Web应用程序设计的TWAIN扫描识别控件。你只需在TWAIN接口写几行代码,就可以用兼容TWAIN的扫描仪扫描文档或从数码相机/采集卡中获取图像。然后用户可以编辑图像并将图像保存为多种格式,用户可保存图像到远程数据库或者Share…...
Stable Diffusion 3 大模型文生图实践
windows教程2024年最新Stable Diffusion本地化部署详细攻略,手把手教程(建议收藏!!)_stable diffusion 本地部署-CSDN博客 linux本地安装教程 1.前期准备工作 1)创建conda环境 conda create --name stable3 python3.10 2)下…...
Linux grep技巧 删除含有指定关键词的行,创建新文件
一. 需求 ⏹有如下文件,现要求 删除含有xuecheng关键字的行删除含有192.168.1.1关键字的行也就是说,最终只会留下127.0.0.1 license.sublimehq.com 127.0.0.1 www.xuecheng.com 127.0.0.1 img.xuecheng.com 192.168.1.1 www.test.com 127.0.0.1 video…...
ChatMoney还能写剧本杀?
本文由 ChatMoney团队出品 近年来,剧本杀作为一种新兴社交游戏,收到了越来越多人的喜爱,它不仅需要玩家们发挥自身演技,还需运用逻辑思维推理,分析所获得的线索,找出案件真凶。然而你是否想过,你…...
优化系统小工具
一款利用VB6编写的系统优化小工具,系统优化、桌面优化、清理垃圾、查找文件等功能。 下载:https://download.csdn.net/download/ty5858/89432367...
调幅信号AM的原理与matlab实现
平台:matlab r2021b 本文知识内容摘自《软件无线电原理和应用》 调幅就是使载波的振幅随调制信号的变化规律而变化。用音频信号进行调幅时,其数学表达式可以写为: 式中,为调制音频信号,为调制指数,它的范围在(0&…...
[MySql]两阶段提交
文章目录 什么是binlog使用binlog进行恢复的流程 什么是redolog缓冲池redologredolog结构 两阶段提交 什么是binlog binlog是二进制格式的文件,用于记录用户对数据库的修改,可以作用于主从复制过程中数据同步以及基于时间点的恢复(PITR&…...
掌握rpc、grpc并探究内在本质
文章目录 rpc是什么?又如何实现服务通信?理解rpcRPC的通信过程通信协议的选择小结RPC VS Restful net_rpc实践案例net/rpc包介绍创建服务端创建client 看看net_rpc的通信调度实现的内部原理明确目标基于自己实现的角度分析我会怎么做代码分析 grpc介绍与…...
构造,析构,垃圾回收
构造函数 基本概念 在实例化对象时 会调用的用于初始化的函数 如果不写,默认存在一个无参构造函数 构造函数的写法 1.没有返回值 2.函数名和类名必须相同 3.没有特殊需求时,一般都是public的 4.构造函数可以被重载 5.this代表当前调用该函数的对…...
杂记 | 搭建反向代理防止OpenAI API被封禁(对于此次收到邮件提示7月9日后将被屏蔽的解决参考)
文章目录 重要声明(免责)01 OpenAI封禁API的情况02 解决方案及原理2.1 原因分析2.2 解决方案2.3 步骤概述 03 操作步骤3.1 购买一个海外服务器3.2 申请一个域名3.3 将域名指向代理服务器3.4 在代理服务器上安装nginx3.5 配置反向代理 重要声明࿰…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
图解JavaScript原型:原型链及其分析 | JavaScript图解
忽略该图的细节(如内存地址值没有用二进制) 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么:保存在堆中一块区域,同时在栈中有一块区域保存其在堆中的地址(也就是我们通常说的该变量指向谁&…...
基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)
引言 在嵌入式系统中,用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例,介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单,执行相应操作,并提供平滑的滚动动画效果。 本文设计了一个…...
