java - 多线程应用程序在多处理器系统中如何工作

标签 java multithreading operating-system multicore

假设我们有一个游戏应用程序,其中汽车、自行车和塔钟在单独的线程中并行运行。

众所周知,一次只有一个线程运行。 (线程之间的上下文切换非常快,这使得它看起来像是与人眼并行运行)

假设游戏在双核手机上运行。

移动处理器的两个核心会共享 3 个线程吗?

汽车线程和自行车线程是否有可能在任何时间点同时运行?

最佳答案

is there any possibility for the car thread and bike thread to run simultaneously at any point of time?

是的,有这种可能性。它取决于 JVM 实现(因为您提到了 Java)和操作系统实现,因此不能保证,但有可能。

As we know only one thread runs at a time. (context switch happens between threads very fast which makes it look like it is running parallel to human eyes)

这是错误的。这在单核单处理器上是正确的,并且在某些 JVM/OS 上可能是正确的,但在一般情况下是错误的。

参见JLS chapter 17 :

Threads may be supported by having many hardware processors, by time-slicing a single hardware processor, or by time-slicing many hardware processors.

关于java - 多线程应用程序在多处理器系统中如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56456741/

相关文章:

java - equals 方法中的等价性

java - Spring 4 使用基于类的数​​据库初始化而不是 xml bean

java - 远程 servlet 之间的通信

multithreading - 无法终止线程

c# - 多线程锁测试

linux - 免费 BSD : What is a global flag

java - 如何在进度条上显示进度(Retrofit 下载)

C++复制结构的内容

linux - 有关将数据复制到 Linux 内核/从 Linux 内核复制数据的问题

operating-system - 为什么以这种方式在信号量方面实现监视器?