启动线程用start方法而不是run方法

启动线程用start方法而不是用run方法

public static void main(String[] args) {
        
        Thread t=new Thread("Thread-TEST"){
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName());
            }
        };
        t.start();
        // t.run();
    }

start 方法会调用start0方法,start0是native方法,会启动一个线程,由虚拟机去调用线程的run方法,这里由于重写了父类的run方法,所以调用子类的run方法

用start启动线程,打印的是

说明创建了新的线程,线程名字是Thread-TEST

用run方法时

 说明这时候,是直接在主线程里执行的,没有创建线程,只是调用了对象的方法而已,因为没有调用start0本地方法

原文地址:https://www.cnblogs.com/moris5013/p/10693367.html