Thread类中的run方法和start方法的区别

在 Java 中,Thread 类的 run 方法和 start 方法有着重要的区别。以下是它们的主要区别:

  1. 方法的目的

    • start 方法的目的是启动一个新线程。调用 start 方法会创建一个新的线程,并在新的线程中执行 run 方法。
    • run 方法的目的是定义线程的执行代码。它包含了线程在运行时要执行的任务,但并不是直接调用它来启动线程。
  2. 调用方式

    • 当你调用 start 方法时,JVM 会分配新的资源和启动一个新的线程。在这个新线程中,run 方法会被自动调用。
    • 调用 run 方法则只是以普通方法的方式执行,没有启动新线程,而是在当前线程中执行 run 方法的代码。
  3. 线程状态

    • 调用 start 方法后,线程的状态会变成 RUNNABLE,并且会被操作系统调度来执行。
    • 如果只调用 run 方法,线程的状态不会变,仍然是调用 run 方法的那个线程的状态。

     4.作用功能:

             1.run方法的作用是描述线程具体要执行的任务

             2.start方法的作用是真正的去申请系统线程

     5.运行结果:

        1. run方法是一个类中的普通方法,主动调用和调用普通方法一样,会顺序执行一次;

        2.start调用方法后, start方法内部会调用Java 本地方法(封装了对系统底层的调用)真正的启动线程,并执行run方法中的代码,run 方法执行完成后线程进入销毁阶段。

 

class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("线程正在运行");
    }
}

public class Main {
    public static void main(String[] args) {
        MyThread thread = new MyThread();
        
        // 启动一个新线程
        thread.start(); // 这将创建一个新的线程并在其中调用 run 方法
        
        // 直接调用 run 方法
        thread.run(); // 这将在主线程中执行,不会创建新线程
    }
}

在上面的示例中,thread.start() 将会创建一个新的线程,而 thread.run() 仅在主线程中运行。

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值