Thread_run()方法

cas 1:

 1 package threadTest;
 2 
 3 public class ThreadTest {
 4     public static void main(String[] args) {
 5         Thread t = new Thread(new Thread3()
);
6 t.run(); 7 t.run(); 8 t.start(); 9 } 10 } 11 12 class Thread3 implements Runnable { 13 14 @Override 15 public void run() { 16 System.out.println("RUNNING"); 17 } 18 }

输入结果:

RUNNING
RUNNING
RUNNING

线程的start方法是将线程提交给操作系统,然后该线程进入Runnable状态,等待系统分配时间片,然后线程执行(run方法执行)

run方法:Thread类中的run方法继承自Runnable接口

t为Thread实例,t.run()执行的是Thread类中的run( )方法,该run( )方法继承自Runnable接口,Thread3类重写了Runnable的run方法,t又通过Thread类创建,

因此,t.run()执行的是Thread3类重写的run()方法,主线程中普通的方法调用;t.start()开启t线程,执行run()方法

 

case 2:

 1 package threadTest;
 2 
 3 public class ThreadTest {
 4     public static void main(String[] args) {
 5         Thread t = new Thread() {
 6             public void run() {
 7                 pong();//通过匿名内部类创建线程对象,重写run方法,该语句不会有输出
 8             }
 9         };
10         t.run();
11         System.out.println("Ping");
12     }
13 
14     protected static void pong() {
15             System.out.println("Pong");
16     }
17 }

t.run();直接调用重写的run方法,而不是开启线程。

 

由以上两个案例说明:

- 线程的开启,需要用线程实例调用start()方法

- t.run()也能执行重写的run()方法,但不是开启线程,只是普通的方法调用

 

posted @ 2017-11-26 13:25  后山前堂客  阅读(1844)  评论(0)    收藏  举报