Java多线程中start和run的区别

飞火流云 2013-12-08 05:37:05
http://blog.csdn.net/cloudeagle_bupt/article/details/17202287
写在这里,求指导,为啥呢?
...全文
1103 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
main本身就是一个线程,启动线程用start,但不一定执行,知识让线程处于可运行状态,run才是真正调度的。
xiaxinhuo 2013-12-12
  • 打赏
  • 举报
回复
start告诉jvm要启动一个线程,之后自动调用其run方法。run()可以把它理解为仅仅是一个方法!
逍遥jc 2013-12-11
  • 打赏
  • 举报
回复
run()相当于在主线程中运行run()函数,而start()相当于另外开一个线程运行run()函数。
长笛党希望 2013-12-10
  • 打赏
  • 举报
回复
start方法是使该线程开始执行;Java 虚拟机开始调用该线程的 run 方法。 run方法:如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。 也就是说,语法规定线程run方法的内容就是要执行的操作,run只是个代号,start才是开始调用run方法的真正入口。 具体详见jdk帮助文档。
zdnuist 2013-12-10
  • 打赏
  • 举报
回复
public synchronized void start() { /** * This method is not invoked for the main method thread or "system" * group threads created/set up by the VM. Any new functionality added * to this method in the future may have to also be added to the VM. * * A zero status value corresponds to state "NEW". */ if (threadStatus != 0) throw new IllegalThreadStateException(); group.add(this); start0(); if (stopBeforeStart) { stop0(throwableFromStop); } } private native void start0(); 多线程的实现需要依靠底层操作系统的支持。
xiaoliuliu2050 2013-12-10
  • 打赏
  • 举报
回复
一楼正解。。。。。。。
ZZZ5512536 2013-12-08
  • 打赏
  • 举报
回复
start是启动线程,而run方法里才是线程执行的内容吧。。
poooll 2013-12-08
  • 打赏
  • 举报
回复
调用run是普通方法,还是在main线程运行。是串行执行,休眠也不影响。 start是告诉虚拟机启动一个新的线程(这样就有两个线程)。由于这个线程中有休眠1S,那么main线程后续代码99.9999999999%会先执行。
pangjingji 2013-12-08
  • 打赏
  • 举报
回复
首先 ,多线程程序Thread对象是不会直接调用run()方法的。直接调用run()方法不会产生新线程,只是相当于普通方法的调用,所以结果就

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧