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

编程里的satrt()方法与run()方法?

为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法?

参与15

2同行回答

nkj827nkj827项目经理长春长信华天
当你调用 start() 方法时你将创建新的线程 , 并且执行在 run() 方法里的代码 。但是如果你直接调用 run() 方法 , 它不会创建新的线程也不会执行调用线程的代码 , 只会把 run 方法当作普通方法去执行 。...显示全部

当你调用 start() 方法时你将创建新的线程 , 并且执行在 run() 方法里的代码 。但是如果你直接调用 run() 方法 , 它不会创建新的线程也不会执行调用线程的代码 , 只会把 run 方法当作普通方法去执行 。

收起
系统集成 · 2020-04-30
浏览1103
youki2008youki2008系统架构师DDT
这是一个非常经典的 java 多线程问题new 一个 Thread,线程进入了新建状态。调用 start() 方法,会启动一个线程并使线程进入了就绪状态,当分配到时间片后就可以开始运行了。 start() 会执行线程的相应准备工作,然后自动执行 run() 方法的内容,这是真正的多线程工作。而直接执行...显示全部

这是一个非常经典的 java 多线程问题

new 一个 Thread,线程进入了新建状态。调用 start() 方法,会启动一个线程并使线程进入了就绪状态,当分配到时间片后就可以开始运行了。 start() 会执行线程的相应准备工作,然后自动执行 run() 方法的内容,这是真正的多线程工作。

而直接执行 run() 方法,会把 run 方法当成一个 main 线程下的普通方法去执行,并不会在某个线程中执行它,所以这并不是多线程工作。

总结: 调用 start 方法方可启动线程并使线程进入就绪状态,而 run 方法只是 thread 的一个普通方法调用,还是在主线程里执行。

收起
互联网服务 · 2020-04-30
浏览1001

提问者

wfang_2020
测试工程师DSL
擅长领域: 系统运维云计算容器

相关问题

问题状态

  • 发布时间:2020-04-30
  • 关注会员:3 人
  • 问题浏览:1621
  • 最近回答:2020-04-30
  • X社区推广