Java EE:Thread类中run和start的区别

目录

1、run

2、start

总结:


Java 的线程是通过 java.lang.Thread 类来实现的。JVM 启动时会有一个由主方法所定义的线程(main线程)。可以通过创建 Thread 的实例来创建新的线程,从而实现多线程。

每个线程都是通过某个特定的 Thread 对象所对应的方法 run() 来完成其操作 的,方法run() 称为线程体。通过调用 Thread 类的 start() 方法来启动一个线程。

1、run

run() 方法在 java.lang.Runnable 接口中定义,必须在实现类中重写。

run() 方法只是 Thread 中的一个普通方法,如果直接调用 run() 方法,程序中依旧只有主线程这一个线程,程序的执行路径还是只有一条。程序还是只能顺序执行 ,要等待 run 方法体执行完毕后,才能继续执行后面的代码,无法真正的实现多线程

2、start

start() 方法在 java.lang.Thread 类中定义。

start 使线程开始执行。用 start 启动线程,可以真正的实现多线程运行,无需等待 run() 方法体代码执行完毕,而是可以直接继续执行后面的代码。通过 Thread 类的start() 方法来启动一个线程,这时候线程处于就绪状态(Runnable),但是并没有运行。通过此 Thread 类调用方法 run() 来完成操作,这里方法 run() 被称为线程体,它包含了要执行的这个线程的内容,run() 方法运行结束,此线程即终止,然后CPU去运行其他线程。

总结:

总之,调用 start() 方法才可以启动线程,而 run() 方法就是 Thread 中的一个普通方法,而且还是在主线程中执行的。把需要并行处理的代码放到 run() 方法中,start() 方法启动线程将自动调用 run() 方法。

run() 无法真正的实现多线程。

start() 可以真正的实现多线程运行。

相关推荐
一线大码13 分钟前
SpringBoot 优雅实现接口的多实现类方式
java·spring boot·后端
花伤情犹在17 分钟前
Java Stream 高级应用:优雅地扁平化(FlatMap)递归树形结构数据
java·stream·function·flatmap
探索宇宙真理.27 分钟前
WordPress Flex QR Code Generator文件上传 | CVE-2025-10041 复现&研究
经验分享·php·安全漏洞
yaoxin52112330 分钟前
212. Java 函数式编程风格 - Java 编程风格转换:命令式 vs 函数式(以循环为例)
java·开发语言
摇滚侠41 分钟前
Spring Boot 3零基础教程,WEB 开发 Thymeleaf 属性优先级 行内写法 变量选择 笔记42
java·spring boot·笔记
滑水滑成滑头41 分钟前
**发散创新:多智能体系统的探索与实践**随着人工智能技术的飞速发展,多智能体系统作为当今研究的热点领域,正受到越来越多关注
java·网络·人工智能·python
摇滚侠1 小时前
Spring Boot 3零基础教程,WEB 开发 Thymeleaf 总结 热部署 常用配置 笔记44
java·spring boot·笔记
十年小站1 小时前
一、新建一个SpringBoot3项目
java·spring boot
2401_841495641 小时前
【数据结构】最长的最短路径的求解
java·数据结构·c++·python·算法·最短路径·图搜索
麦麦鸡腿堡1 小时前
Java的代码块介绍与快速入门
java·开发语言