Java--Thread 中run()方法和start()方法的区别

  • start() 方法在调用的时候 会创建一个执行 ***run()***方法的一个新的线程.
  • ***run()***方法只会在同一个线程中执行这个方法
public class Tset1 {

    public static void main(String[] args) {

        MyThread t2=new MyThread();
        t2.start();

        for (int i = 0; i < 10; i++)
            System.out.println("t1 test!!");
    }

}
class MyThread extends Thread{
    @Override
    public void run() {

        System.out.println("t2 test!!!!");
    }
}

  • 如上述代码 main 方法中会输出10次 t1 如果是多线程 的情况 那么 t2中的输出 有可能会夹在 t1中也就是下面这种情况

image-20210519163810616image-20210519163828657

  • 如果把main方法中的 t2.start() 改成 t2.run() 则 t2必定会在t1之前输出 :

image-20210519163750774

Q.E.D.