区别对比如下:
我们知道Java中的线程是通过Java.lang.Thread来实现的,那么我们就可以通过实例化Thread一个对象来创建一个线程,然后再调用start()启动,但是Thread的一个特定的方法run()也可以启动线程,那么这两个方法有什么区别呢?
线程状态
在Java当中,线程通常有五种状态:创建、运行、阻塞、等待、终止 NEW------------------->新建状态,没有调用start()之前的状态 RUNNABLE---------->运行状态,(running执行中,ready就绪(等待cpu时间片)) BLOCKED------------>阻塞状态, WAITING-------------->等待状态,没有明确的等待结束时间,调用wait() TIMED_WAITING—>超时等待状态,有明确的等待时间,如:sleep(xxx) TERMINATED-------->终止状态登录后复制
多线程原理:
立即学习“Java免费学习笔记(深入)”;
我们一般使用thread new一个线程,然后调用start方法启动,线程就会处于运行状态中ready,等待CPU调度,然后再执行线程里面的run()方法,使用start方法才真正实现了多线程运行,因为这个时候不用等待我们的run方法执行完成就可以继续执行下面的代码,这才叫多线程。
如果直接使用thread执行run方法会怎么样呢?
因为run方法是thread里面的一个普通的方法,如果直接调用run()方法,这个时候它会运行在主线程中的,因为程序中只有主线程一个线程,如果有两个线程,都是直接调用run()方法,那么他们的执行顺序一定是按顺序执行的,并没有实现多线程的目的。
免费学习视频分享:java视频教程
代码对比
public class ThreadDemo5 { public static final boolean flag=false; public static void main(String[] args) { Thread t1=new Thread(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName()); } }); t1.start(); } }登录后复制
调用start()方法,线程名是默认的
public class ThreadDemo5 { public static final boolean flag=false; public static void main(String[] args) { Thread t1=new Thread(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName()); } }); t1.run(); } }登录后复制
调用run(),线程名是main
相关推荐:java入门教程
以上就是java线程中start方法与run方法的区别是什么的详细内容,更多请关注慧达安全导航其它相关文章!
免责 声明
1、本网站名称:慧达安全导航
2、本站永久网址:https//www.huida178.com/
3、本站所有资源来源于网友投稿和高价购买,所有资源仅对编程人员及源代码爱好者开放下载做参考和研究及学习,本站不提供任何技术服务!
4、本站所有资源的属示图片和信息不代表本站的立场!本站只是储蓄平台及搬运
5、下载者禁止在服务器和虚拟机下进行搭建运营,本站所有资源不支持联网运行!只允许调试,参考和研究!!!!
6、未经原版权作者许可禁止用于任何商业环境,任何人不得擅作它用,下载者不得用于违反国家法律,否则发生的一切法律后果自行承担!
7、为尊重作者版权,请在下载24小时内删除!请购买原版授权作品,支持你喜欢的作者,谢谢!
8.若资源侵犯了您的合法权益,请持 您的版权证书和相关原作品信息来信通知我们!QQ:1247526623我们会及时删除,给您带来的不便,我们深表歉意!
9、如下载链接失效、广告或者压缩包问题请联系站长处理
10、如果你也有好源码或者教程,可以发布到网站,分享有金币奖励和额外收入!
11、本站资源售价只是赞助,收取费用仅维持本站的日常运营所需
12、因源码具有可复制性,一经赞助,不得以任何形式退款。
13、本文内容由网友自发贡献和站长收集,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系1247526623@qq.com
转载请注明出处: 慧达安全导航 » java线程中start方法与run方法的区别是什么
发表评论 取消回复