java - 多线程真的是并发运行还是内联运行(一个接一个)

标签 java multithreading

我确定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/

相关文章:

multithreading - 如何从另一个线程中断 ReadLn

java - 消费者生产者模式,生产者等待所有消费者完成后再重新触发自身?

java - Swing L&F - 导入和实现

java - JAVA 中具有 2 个以上字节的 UTF8 字符串的 Substring 或 characterAt 方法

java - 您是否应该省略已由该类的属性指定的变量名中的信息?

java - guava-libraries : Is Objects. hashCode(Object[]) 碰撞安全吗?

c# - System.Timers.Timer 和 System.Threading.Timer 的不同行为

c# - 在继续更新 UI 之前强制任务等待

java - 如何在使用执行器的同时启动线程?

java - Google map 中的缩放动画