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()方法,但不是开启线程,只是普通的方法调用