java多线程run()和start()的区别
  guazijXi11f4 2023年11月02日 63 0


其实,run()和start()区别很简单。

当你启动线程,使用start(),系统会把run()方法当成线程执行体来处理,这是正常的,也是正确的情况。但是,当你启动线程时,调用run()方法,系统run()方法会立即执行,但是这时候系统会把run()方法当成普通的方法,线程对象也当成一个普通对象。

不理解我上面说的话?那我就在解释一下。

第一个问题,为什么要有多线程。这个问题的答案可以搜索到很多。我这边给出我理解的,不怎么官方的答案:创建一个线程,就是为了在原有主线程的基础上,创建一个新的任务,以达到想要的效果。

既然如此,如果我们调用run()方法,系统会把run()方法当成普通的方法,就不能达到创建一个新的任务的目的。

第二个问题,线程如何创建。最常见的有两种,继承Thread类和实现Runnable接口。当然还有像 实现Callable接口 的方式创建线程。这些方法,都类似的要把run()方法重写,把run()方法包装成线程执行体。(实现Callable接口 的方法,要把call()包装成线程执行体)。可见run()只是线程类的一个方法。

既然如此,如果要启动一个线程,当然要调用strat(),如果调用run(),则是调用线程类的一个run()方法,这在系统看来,不过是调用一个很普通的类(线程类)中的一个普通的方法(run()方法),会一视同仁的在主线程上面执行。

 

更多内容请关注微信公众号“外里科技

官方公众号

外里科技

运营公众号

英雄赚





开源代码

https://gitee.com/B_T/beimi

java多线程run()和start()的区别_多线程

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  3I1N9ysrcSyk   2023年12月08日   31   0   0 javahapi数据交换
  DF5J4hb0hcmT   2023年12月07日   50   0   0 javaArthas
guazijXi11f4