start、run、join

首先得了解什么是主线程,当Java程序启动时,一个线程立刻运行,该线程通常叫做程序的主线程(main thread)。主线程的重要性体现在两方面:
1. 它是产生其他子线程的线程
2. 通常它必须最后完成执行,因为它执行各种关闭动作。

run() 只是运行此方法,依旧处于主线程内,不会开启新线程。

eg: thread1.run()

start() 开启一个新线程,并放置于就绪队列

eg: thread1.start()

join() 开启一个新线程并加入到主线程,注意,此方法会阻塞主线程,在新线程完成之前主线程无法做任何事。

eg: thread1.join()

备注:主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程将于子线程结束之前结束,但是如果主线程处理完其他的事务后,需要用到子线程的处理结果,也就是主线程需要等待子线程执行完成之后再结束,这个时候就要用到join()方法了。

原文地址:https://www.cnblogs.com/yanze/p/9875994.html