java中多线程的机制

时间:2015-09-30 13:39:57

标签: java multithreading

当我们调用线程的#start()方法时,它会调用#run()方法。但是在调用#start()之后,控件返回到#main()方法(或者创建线程的位置)。

为什么会这样?为什么控件没有跳转到#run()方法?

3 个答案:

答案 0 :(得分:2)

这是多线程的重点。

新线程开始执行其代码(来自run方法),主线程也继续执行其代码,以便代码并行执行。

答案 1 :(得分:1)

首先,要知道进程只是一个执行中的程序。

每个进程至少有一个线程,一个执行单元,它是主线程。线程彼此并行运行。

当你关闭一个新线程时,你从中解除它的当前线程仍在运行(当然,直到它结束)。现在,您有2个并行运行的线程。

在像Eclipse这样的IDE中进行调试时,通常会跟踪一个特定的线程,主线程。因此,调试中的逐步执行过程不会遵循新线程的执行路径。在创建新线程后,它将继续使用任何代码。

答案 2 :(得分:0)

您不确定它是否会返回调用start()的方法,或者它是否会立即进入新线程。 Java线程执行很难预测。它可能会进入新线程一段时间,然后停止并返回主线程,然后完成新线程,然后返回主线程,等等。重点是,有两个现在并行的指令集到被执行,但由于JVM并不真正并行执行它们,而是一次一个,JVM将按照它确定的顺序执行它们。