首页 > 编程语言 >Java中线程的run()和start()有什么区别?

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

时间:2024-06-30 20:27:30浏览次数:21  
标签:调用 Java start MyThread 线程 run 方法

在 Java 中,run() 方法和 start() 方法在线程的使用中有重要区别:

run() 方法:

  • 当您直接调用线程对象的 run() 方法时,它会在当前线程中执行 run() 方法中的代码,不会启动新的线程。这就相当于普通的方法调用,不会实现多线程的并发执行效果。

start() 方法:

  • 调用线程对象的 start() 方法时,会启动一个新的线程,并在新线程中执行 run() 方法中的代码。
  • 这使得多个线程可以并发执行,从而实现多任务的同时处理,提高程序的执行效率和响应性。

总结:start() 方法中包含了run() 方法的使用,所以要实现线程的并发执行,应该调用 start() 方法,而不是直接调用 run() 方法。

代码展示

public class ThreadExample {
    public static void main(String[] args) {
        // 直接调用 run 方法,不会启动新线程
        MyThread thread1 = new MyThread();
        thread1.run();

        // 调用 start 方法,启动新线程执行 run 方法
        MyThread thread2 = new MyThread();
        thread2.start();
    }
}

class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("当前线程: " + Thread.currentThread().getName() + " 正在执行");
    }
}

在上述代码中,直接调用 thread1.run() 时,是在当前主线程中执行 run 方法的代码。而调用 thread2.start() 时,会启动一个新的线程来执行 run 方法中的代码。

标签:调用,Java,start,MyThread,线程,run,方法
From: https://blog.csdn.net/weixin_60680210/article/details/140085700

相关文章

  • JAVA高级进阶14设计模板
    第十四天、设计模板什么是设计模板(Designpattern)?一个问题通常有n种解法,其中肯定有一种解法是最优的,这个最优的解法被人总结出来了,称之为设计模式设计模式有20多种,对应20多种软件开发中会遇到的问题单例设计模式单例设计模式作用:确保一个类只有一个对象场景:计算......
  • JAVA高级进阶13单元测试、反射、注解
    第十三天、单元测试、反射、注解单元测试介绍单元测试就是针对最小的功能单元(方法),编写测试代码对其进行正确性测试咱们之前是如何进行单元测试的?有啥问题?只能在main方法编写测试代码,去调用其他方法进行测试。无法实现自动化测试,一个方法测试失败,可能影响其他方......
  • 基于Java的会员制医疗预约服务管理信息系统
    你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。开发语言:Java数据库:MySQL技术:Java技术ssm框架,结合JSPM工作流引擎工具:IDEA/Eclipse、Navicat、Maven系统展示首页系统首页界面图医院信息医院信息界面图坐诊信息坐诊信息界面图个人中心个人信息......
  • java将整数转换为字符串
    1.toString适用于int类型publicclasstest{ publicstaticvoidmain(String[]args){ inti=777; Stringstr=Integer.toString(i); System.out.println(str); }}2.valueOf 适用于int、double、boolean和Object类型publicclasstest{ public......
  • Java_JVM:垃圾收集算法
    GC最基础的算法有三种:标记-清除算法复制算法标记-压缩算法我们常用的垃圾回收器一般都采用分代收集算法。“标记-清除”(Mark-Sweep)算法,如它的名字一样,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。“复制”......
  • 基于java语言+springboot技术架构开发的 互联网智能3D导诊系统源码支持微信小程序、AP
    基于java语言+springboot技术架构开发的互联网智能3D导诊系统源码支持微信小程序、APP医院AI智能导诊系统源码一、智慧导诊系统开发原理导诊系统从原理上大致可分为基于规则模板和基于数据模型两类。1、基于规则推理的方法通过人工建立症状、疾病和科室之间的对应规则实......
  • 关于Java中 因取消装箱可能产生 'NullPointerException' 的原因
    一.什么是装箱,什么是拆箱?装箱:将值类型转换为引用数据类型。拆箱:将引用数据类型转换为值类型。说白了就是Integer与int数据类型之间的转换二.为什么会有自动一说呢?我们都知道,java是一个面向对象的语言。因此包括数字、字符、日期、布尔值等等再内的一切都是对象。但是对......
  • 基于java+springboot+vue实现的毕业论文管理系统(文末源码+Lw)251
    摘 要现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本毕业论文管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效......
  • flutter项目报错[!] The ‘Pods-Runner‘ target has transitive dependencies that i
    运行flutter项目报错[!]The'Pods-Runner'targethastransitivedependenciesthatincludestaticallylinkedbinaries:(AMap2DMap/MAMapKit.framework,AMapLocation/AMapLocationKit.framework,andPods/AMapSearch/AMapSearchKit.framework)解决方案:使用静态框架......
  • 第十三站:Java蓝宝石——云计算的浩瀚天空
    Java作为一门成熟且广泛使用的编程语言,在云计算领域扮演着重要的角色。以下是对Java在云计算领域应用的详细讲解:云服务提供商的JavaSDK:AmazonWebServices(AWS):提供了AWSSDKforJava,允许开发者在Java应用程序中轻松集成AWS服务,如AmazonEC2、AmazonS3、AWSLamb......