我确定MultiThreading
的基本术语我很清楚 - 一个进程由多个线程组成并且可以同时运行它们,对吗?
我遇到了这个site ,它声明:
Only one thread at a time can run in a single process.
The thread scheduler mainly uses preemptive or time slicing scheduling to schedule the threads.
那么写作时实际发生了什么:
public static void main (String [] args) {
new CalcThread("CalcThread A").start();
new CalcThread("CalcThread B").start();
}
假设线程调度程序选择了 thread a
首先运行,假设 thread b
将在其之后立即安排。是thread b
仅在 thread a
之后运行已终止?
如果是这种情况 - 为什么称其为并发行为?
最佳答案
调用start()
调度一个线程来执行。虽然它通常“很快”执行,但实际执行开始时间是不确定的;这取决于 JVM。
在多核机器上,其他线程(可能)会在主线程继续运行时在其他核上并发执行。
在单核机器(例如低规范的 AWS 机器)上,JVM 可能会依次启动-进程-终止每个线程,然后再继续主线程(我已经看到这种情况发生)。
关于java - 多线程真的是并发运行还是内联运行(一个接一个),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39004734/