美文网首页
多线程执行时为什么调用的是start()方法而不是run()方法

多线程执行时为什么调用的是start()方法而不是run()方法

作者: 郑在学_blog | 来源:发表于2017-10-15 00:27 被阅读0次
Thead类中start()方法和run()方法的区别

start()用来启动一个线程,当调用start()方法时,系统才会开启一个线程,通过Thead类中start()方法来启动的线程处于就绪状态(可运行状态),此时并没有运行,一旦得到CPU时间片,就自动开始执行run()方法。此时不需要等待run()方法执行完也可以继续执行下面的代码,也由此看出run()方法并没有实现多线程。

run()方法是在本线程里的,只是线程里的一个函数,而不是多线程的。如果直接调用run(),其实就相当于是调用了一个普通函数而已,直接待用run()方法必须等待run()方法执行完毕才能执行下面的代码,所以执行路径还是只有一条,根本就没有线程的特征,所以在多线程执行时要使用start()方法而不是run()方法。

总结

run()只是一个函数,并没有多线程的特征。Thead类中的Start()才是实现多线程的。

相关文章

  • 多线程执行时为什么调用的是start()方法而不是run()方法

    Thead类中start()方法和run()方法的区别 start()用来启动一个线程,当调用start()方法时...

  • 聊聊线程——线程的启动和停止

    调用start()方法开始,调用run()方法结束。 start()方法代码 run()方法代码 register...

  • java多线程start()和run()方法详解

    为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法?他们之前有什么区别?...

  • 多线程

    多线程 创建与启动 方式1:继承于Thread类 继承Thread类 重写run方法 创建对象 调用start方法...

  • 线程

    1.start和run方法 :run方法只在主线程实现,无法实现多线程。start开启多线程 2.开启线程...

  • java多线程

    多线程的实现方式 自定义类继承thread类 重写run()方法,创建自定义类对象,调用start()方法...

  • JAVA线程run方法如何运行

    通过start方法调用start0方法,start0方法是一个非JAVA程序的方法,他会调用run方法。如果是通过...

  • java多线程

    两种实现多线程的区别 1.继承thread类的,是由子类重写run,调用start,他是直接找到子类的run方法。...

  • JAVA多线程基础

    实现线程 1. 继承Thread 2. 实现Runable 3. 调用start和run方法的区别调用run方法是...

  • 线程Thread的start和run方法的区别

    一、认识Thread的 start() 和 run() t.start()会导致run()方法被调用,run()方...

网友评论

      本文标题:多线程执行时为什么调用的是start()方法而不是run()方法

      本文链接:https://www.haomeiwen.com/subject/idkquxtx.html