生活生产服务其它并发编程

线程的 run()和 start()区别?

线程的 run()和 start()有什么区别?显示全部

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

收起
参与22

查看其它 3 个回答youki2008的回答

youki2008youki2008系统架构师DDT

每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,run()方法称为线程体。通过调用Thread类的start()方法来启动一个线程。

start() 方法用于启动线程,run() 方法用于执行线程的运行时代码。run() 可以重复调用,而 start() 只能调用一次。

start()方法来启动一个线程,真正实现了多线程运行。调用start()方法无需等待run方法体代码执行完毕,可以直接继续执行其他的代码; 此时线程是处于就绪状态,并没有运行。 然后通过此Thread类调用方法run()来完成其运行状态, run()方法运行结束, 此线程终止。然后CPU再调度其它线程。

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

互联网服务 · 2020-04-30
浏览825

回答者

youki2008
系统架构师DDT
擅长领域: 服务器云计算数据库

youki2008 最近回答过的问题

回答状态

  • 发布时间:2020-04-30
  • 关注会员:5 人
  • 回答浏览:825
  • X社区推广