java线程中start和run的区别详解

 更新时间:2019年10月09日 16:50:35   作者:MartinEDM  
这篇文章主要介绍了java线程中start和run的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了java线程中start和run的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

public class Test1 extends Thread {

  @Override
  public void run() {
    while (true)
    {
      System.out.println(Thread.currentThread().getName());
    }
  }
  public static void main(String[] args) {
    Test1 test1=new Test1();
    test1.run();  //输出结果main
    test1.start(); //输出结果Thread-0
  }
}

1.start

start作用是启动一个新线程。

当用start()开始一个线程后,线程就进入就绪状态,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。但是这并不意味着线程就会立即运行。只有当cpu分配时间片时,这个线程获得时间片时,才开始执行run()方法。start()不能被重复调用,它调用run()方法.run()方法是你必须重写的

2.run

run()就和普通的成员方法一样,可以被重复调用。

如果直接调用run方法,并不会启动新线程!程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到多线程的目的。

调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Centos中安装jdk案例讲解

    Centos中安装jdk案例讲解

    这篇文章主要介绍了Centos中安装jdk案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Spring Boot ActiveMQ连接池配置过程解析

    Spring Boot ActiveMQ连接池配置过程解析

    这篇文章主要介绍了Spring Boot ActiveMQ连接池配置过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • IDEA 设置显示内存的使用情况和内存回收的方法

    IDEA 设置显示内存的使用情况和内存回收的方法

    这篇文章主要介绍了IDEA 设置显示内存的使用情况和内存回收的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Java语言之LinkedList和链表的实现方法

    Java语言之LinkedList和链表的实现方法

    LinkedList是由传统的链表数据结构演变而来的,链表是一种基本的数据结构,它可以动态地增加或删除元素,下面这篇文章主要给大家介绍了关于Java语言之LinkedList和链表的实现方法,需要的朋友可以参考下
    2023-05-05
  • Java通过动态规划设计股票买卖最佳时机

    Java通过动态规划设计股票买卖最佳时机

    动态规划可谓是大名鼎鼎,笔试面试中的高频考点,也是重点难点,动态规划类型题目灵活多变,难度系数也相对较高,往往我们做不好动态规划的题目就会与心仪的offer失之交臂,本篇文章我们就一起来研究一下动态规划设计股票买卖最佳时机
    2022-10-10
  • Java排序算法三之归并排序的递归与非递归的实现示例解析

    Java排序算法三之归并排序的递归与非递归的实现示例解析

    这篇文章主要介绍了Java排序算法三之归并排序的递归与非递归的实现示例解析,文章通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • springBoot项目配置文件加载优先级及同配置覆盖问题详解

    springBoot项目配置文件加载优先级及同配置覆盖问题详解

    SpringBoot配置⽂件可以放置在多种路径下,不同路径下的配置优先级有所不同,下面这篇文章主要给大家介绍了关于springBoot项目配置文件加载优先级及同配置覆盖问题的相关资料,需要的朋友可以参考下
    2023-05-05
  • Java JVM类加载机制解读

    Java JVM类加载机制解读

    JVM将class文件字节码文件加载到内存中, 并将这些静态数据转换成方法区中的运行时数据结构,在堆(并不一定在堆中,HotSpot在方法区中)中生成一个代表这个类的java.lang.Class 对象,作为方法区类数据的访问入口,接下来将详细讲解JVM类加载机制
    2021-11-11
  • springboot项目如何部署到服务器

    springboot项目如何部署到服务器

    这篇文章主要介绍了springboot项目如何部署到服务器问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Java日期时间操作的方法

    Java日期时间操作的方法

    这篇文章主要为大家详细介绍了Java日期时间操作的一些方法,获得Calendar,定义日期/时间的格式等,感兴趣的小伙伴们可以参考一下
    2016-08-08

最新评论