Java 线程的 run() 和 start() 有什么区别?

news/2025/2/14 7:07:33/

Java 线程的 run() 和 start() 有什么区别?

在 Java 中,run()start()Thread 类中两个重要的方法,它们有以下区别:

  1. run() 方法

    • run() 方法定义了线程的主体,包含了线程要执行的代码。
    • 当直接调用 run() 方法时,它在当前线程的上下文中执行,而不会创建新的线程。因此,代码会在当前线程中同步执行,而不是并发执行。
  2. start() 方法

    • start() 方法用于启动线程,它会创建一个新的线程,并在新线程的上下文中执行 run() 方法中的代码。
    • 调用 start() 方法后,新线程会异步执行 run() 方法中的代码,使得线程能够并发执行。

下面是一个简单的示例,演示了 run()start() 的区别:

public class RunVsStartExample {public static void main(String[] args) {// 创建一个线程实例MyThread myThread = new MyThread();// 调用 run() 方法,代码在当前线程执行,不会创建新线程myThread.run();// 调用 start() 方法,创建新线程并异步执行 run() 方法myThread.start();}// 自定义线程类static class MyThread extends Thread {public void run() {for (int i = 0; i < 5; i++) {System.out.println(Thread.currentThread().getName() + ": " + i);}}}
}

在上述示例中,调用 myThread.run() 不会创建新线程,而是在主线程中同步执行。调用 myThread.start() 创建了一个新的线程,并异步执行了 run() 方法,使得线程能够并发执行。注意,直接调用 run() 方法并不会实现多线程的效果。


http://www.ppmy.cn/news/1264063.html

相关文章

FPGA | Verilog基础语法

这里写自定义目录标题 Case语句系统任务$dumpfile | 为所要创建的VCD文件指定文件名。$dumpvar | 指定需要记录到VCD文件中的信号$fscanf$fread菜鸟教程连接 Case语句 case(case_expr)condition1 : true_statement1 ;condition2 : true_stat…

数据结构之交换排序

目录 交换排序 冒泡排序 冒泡排序的时间复杂度 快速排序 快速排序单趟排序的时间复杂度 快速排序的时间复杂度 快速排序的优化 优化1&#xff1a;三数取中法 优化2&#xff1a;小区间优化法 交换排序 在日常生活中交换排序的使用场景是很多的&#xff0c;比如在学校做…

微信小程序base64与十六进制相互转换(使用btoa、atob方法报undefined)

前言&#xff1a;搜到很多方法都用到了btoa()、atob()&#xff0c;这两个属于Window 对象&#xff0c;在浏览器端可以直接使用&#xff0c;但是在小程序里面使用会报undefined。看到uniapp和微信小程序官方文档都提供了下面两个api&#xff0c;就想着经过ArrayBuffer 对象转换一…

15.Java程序设计-基于SSM框架的微信小程序校园求职系统的设计与实现

摘要&#xff1a; 本研究旨在设计并实现一款基于SSM框架的微信小程序校园求职系统&#xff0c;以提升校园求职流程的效率和便捷性。通过整合微信小程序平台和SSM框架的优势&#xff0c;本系统涵盖了用户管理、职位发布与搜索、简历管理、消息通知等多个功能模块&#xff0c;为…

OrangePi ZERO2 刷机与启动

镜像准备 用读卡器和Win32Diskimager刷写镜像到内存卡&#xff0c;镜像文件见下面百度云链接&#xff1a;https://pan.baidu.com/s/14aKTznc4Jvw4SoFF54JUTg 提取码&#xff1a;1815 刷写完毕后插回香橙派 串口登录 用MobaXterm和USB-TTL进行串口登录&#xff0c;MobaXterm软…

redis 三主三从高可用集群docker swarm

由于数据量过大&#xff0c;单个Master复制集难以承担&#xff0c;因此需要对多个复制集进行集群&#xff0c;形成水平扩展每个复制集只负责存储整个数据集的一部分&#xff0c;这就是Redis的集群&#xff0c;其作用是提供在多个Redis节点间共享数据的程序集。 官网介绍地址 re…

mysql的BIT数值类型

MySQL :: MySQL 8.2 Reference Manual :: 11.1.5 Bit-Value Type - BIT MySQL :: MySQL 8.2 Reference Manual :: 9.1.5 Bit-Value Literals BIT类型用来存放bit值&#xff0c;每一位是0或者1&#xff0c;允许1-64位。 例如&#xff0c;下面表定义了new这列的类型为8位的BIT…

Kubernetes - 为什么 K8S 在容器里不能调用自己?

问题描述 最近遇到一个神奇的现象&#xff0c;在 K8S 的 POD 容器中&#xff0c;比如 pod name&#xff1a;mini-appnamespace&#xff1a;devport&#xff1a;5050 那么&#xff0c;是无法在 mini-app 容器里执行以下命令&#xff0c;如果执行&#xff0c;会一直卡在这条命…