Thread.start和Thread.run的区别
方法的定义
start()方法在java.lang.Thread类中定义;
而run()方法在java.lang.Runnable接口中定义,必须在实现类中重写。
新线程创建
当程序调用start()方法时,会创建一个新线程,然后执行run()方法,它是异步的。
如果我们直接调用run()方法,则不会创建新的线程,run()方法将作为当前调用线程本身的常规方法调用执行,并且不会发生多线程,是同步的。
多次调用
线程是有状态的,start()方法不能多次调用,否则抛出java.lang.IllegalStateException;
而run()方法可以进行多次调用,因为它只是一种正常的方法调用。