方法的定义

​ start()方法在java.lang.Thread类中定义;

​ 而run()方法在java.lang.Runnable接口中定义,必须在实现类中重写。

新线程创建

​ 当程序调用start()方法时,会创建一个新线程,然后执行run()方法,它是异步的。

​ 如果我们直接调用run()方法,则不会创建新的线程,run()方法将作为当前调用线程本身的常规方法调用执行,并且不会发生多线程,是同步的。

多次调用

​ 线程是有状态的,start()方法不能多次调用,否则抛出java.lang.IllegalStateException;

​ 而run()方法可以进行多次调用,因为它只是一种正常的方法调用。