演示图
thread1
package thread; public class thread1 extends Thread{ public thread1() { } public void run() { System.out.println("线程里面的run执行"); } }mian
package thread; public class mian extends Thread{ public static void main(String args[]) { thread1 t =new thread1(); t.start(); t.run(); System.out.println("ping"); }}结果1
线程里面的run执行 ping 线程里面的run执行结果二
线程里面的run执行 线程里面的run执行 ping去掉start方法
package thread; public class mian extends Thread{ public static void main(String args[]) { thread1 t =new thread1(); t.run(); System.out.println("ping"); }}结果唯一
线程里面的run执行 ping 去掉run方法 package thread; public class mian extends Thread{ public static void main(String args[]) { thread1 t =new thread1(); t.start(); System.out.println("ping"); }}结果一
ping 线程里面的run执行结果二(由于时间太短,无法出现另一种情况,我们给主函数加上sleep看看,主函数也是一个线程)
package thread; public class mian extends Thread{ public static void main(String args[]) { thread1 t =new thread1(); t.start(); try { sleep(500); } catch (Exception e) { } System.out.println("ping"); }}结果二
线程里面的run执行 ping总结:start()是开启一个线程到就绪状态,等待获取cpu时间,然后获取之后运行内部run方法,然后销毁。
开启的线程与主线程是两个互不干扰的线程,所以输出是先后,根据获得cpu时间的顺序执行的。
直接调用run()方法,是作为一个类的一个普通方法使用的,所以调用先后根据使用顺序执行。