启动线程用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本地方法