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

Posted 忆雨1992

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程中start()和run()的区别相关的知识,希望对你有一定的参考价值。

每个线程都有要执行的任务。线程的任务处理逻辑可以在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()的区别的主要内容,如果未能解决你的问题,请参考以下文章

java线程中start和run的区别

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

java多线程中start和run的区别

Java基础加强之并发Thread中start()和run()的区别

Java start和run启动线程的区别

Java Thread 的 run() 与 start() 的区别