开发者社区> 问答> 正文

java线程中 start方法和run方法的区别和联系是什么

java线程中 start方法和run方法的区别和联系是什么start是启动一个线程到就绪状态run是运行一个线程
run一个线程必须先start一个线程,这么理解对不

展开
收起
蛮大人123 2016-03-25 14:51:05 2667 0
2 条回答
写回答
取消 提交回答
  • start()方法告诉jvm该线程准备运行,jvm通过调用任务的run()方法执行任务。 实现Runnable接口后必须重写run()方法,而不是重写start()方法
    2019-07-17 19:14:23
    赞同 展开评论 打赏
  • 我说我不帅他们就打我,还说我虚伪

    1) start:
      用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法,这里方法 run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止。
      2) run:
      run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到写线程的目的。总结:调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。这两个方法应该都比较熟悉,把需要并行处理的代码放在run()方法中,start()方法启动线程将自动调用 run()方法,这是由jvm的内存机制规定的。并且run()方法必须是public访问权限,返回值类型为void.。

    2019-07-17 19:14:22
    赞同 展开评论 打赏
问答分类:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
如何通过 Serverless 提高 Java 微服务治理效 立即下载
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
多IO线程优化版 立即下载