码迷,mamicode.com
首页 > 编程语言 > 详细

线程中start()和run()的区别

时间:2018-05-23 23:38:01      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:调度   .com   处理   alt   线程   图片   通过   入口   image   

每个线程都有要执行的任务。线程的任务处理逻辑可以在Tread类的run实例方法中直接实现或通过该方法进行调用,因此

run()相当于线程的任务处理逻辑的入口方法,它由Java虚拟机在运行相应线程时直接调用,而不是由应用代码进行调用。

而start()的作用是启动相应的线程。启动一个线程实际是请求Java虚拟机运行相应的线程,而这个线程何时能够运行是由线程调度器决定的。start()调用结束并不表示相应线程已经开始运行,这个线程可能稍后运行,也可能永远也不会运行。

下面看一个例子:

 

 1 /**
 2  * run()相当于线程的任务处理逻辑的入口方法
 3  * start()的作用是启动相应的线程
 4  * @author yiRain
 5  *
 6  */
 7 public class startAndRun {
 8     public static void  main(String[] args) {
 9         Thread t = new Thread(){
10             public void run(){
11                 world();
12             }
13         };
14         
15         t.start();
16         //t.run();
17         System.out.print(" Hello ");
18     }
19     
20     static void world(){
21         System.out.print(" world ");
22     }
23 
24 }

 

 

输出结果:

技术分享图片

 

 相应的调用t.run(),只是调用一个实例的方法而已,并未启动线程,因此run()会被立即执行

输出结果:

技术分享图片

 

线程中start()和run()的区别

标签:调度   .com   处理   alt   线程   图片   通过   入口   image   

原文地址:https://www.cnblogs.com/yiRain1992/p/9079989.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!