线程Thread的t.start()实现的是异步的线程,t.run()方法实现的是同步线程;

package interview;

public class TestRun_Start extends Thread {
public static void main(String[] args) {

    TestRun_Start ta = new TestRun_Start();
    Thread t = ta.new TestThread2("新建线程1");
    {
        //启动线程不一定就马上执行
        t.start();
        System.out.println(currentThread() + "\t" + "1");
        //当实现接口的对象Runnable被用来创建一个线程,启动线程使对象的run在独立执行的线程中调用的方法。
        //方法run的一般合同是它可以采取任何行动。
        //直接调用线程类的run(),会被当做普通的函数调用,程序依旧是主线程,此时的run启动的就是当前的线程main线程。
        //也就是说start()方法才能异步调用run(),直接调用时同步的,无法达到多线程的目的;
        t.run();
        System.out.println(currentThread() + "\t" + "2");
    }
}

class TestThread2 extends Thread {
    public TestThread2(String n) {
        super(n);
    }

    @Override
    public void run() {
        System.out.println(Thread.currentThread() + "\t" + "3");
    }
}}

线程Thread的t.start()实现的是异步的线程,t.run()方法实现的是同步线程;

线程Thread的t.start()实现的是异步的线程,t.run()方法实现的是同步线程;