java 多线程的start()和run()的理解
run()方法中是各个线程要执行的具体内容。所以当一个线程直接调用run()时那么直接开始执行方法体,这是在main线程中的多个线程只能时按照顺序的等待前面的线程结束run()方法的执行。
而调用start方法只是线程进入准备阶段(Ready),并没有真正执行,这需要JVM进行分配时间片进行轮转线程执行,当一个线程得到时间片时,那么JVM会使该线程自动的调用run方法执行,当时间片结束时,这就到下一个线程来执行run方法了,当再次接到时间片时,进行线程的上下文切换,继续之前的运行。这才是多线程的含义。