每个线程都有要执行的任务,线程的任务逻辑可以在 Thread 类的 run 方法中直接实现或通过该方法调用,因此
run() 相当于线程任务的入口,它由 Java 虚拟机在运行相应线程时直接调用,而不是由应用代码进行调用
而 start 的作用是启动相应线程。启动一个线程实际是请求 Java 虚拟机运行相应的线程,而这个线程何时能够运行是由线程调度器决定的。
start() 调用结束并不表示相应线程已经开始运行,这个线程可能稍后运行,也可能永远不会运行
run() 方法只是 Thread 类下面的一个普通方法,如果直接调用只是会在当前线程内运行而已,并不会创建新的线程。而 start() 方法则是直接创建了一个新的线程并将需要执行的内容填充进去。也就是说 start() 方法才是多线程直接相关的
参考:https://blog.csdn.net/Done_FollowMyHeart/article/details/81542838