多核处理器与Java

5
我刚刚在阅读“服务器如何处理多个请求”的内容时,了解到了Java多线程和多核CPU的知识。
在计算机只有单核处理器的时代,如果有两个Java线程同时运行,那么JVM调度程序会负责为每个线程分配时间。因此,这两个线程永远不会并行运行,但会利用空闲时间(例如,如果一个线程被阻塞在某些资源上)。
但是,当有多个核心和Java7中的fork/join框架时,情况是否一样呢?我的意思是,我听说使用多个核心可以实现并行处理。因此,如果我有两个线程正在运行,有两个核心的CPU,并且每个线程都被分配一个单独的核心(虽然不能保证),它们是否真正并行执行,因为JVM调度程序仍然会导致时间交错?
如果我的问题很愚蠢,请原谅,但我确实不确定。请帮助我理解!
谢谢! Ouney

7
线程调度实际上是委托给操作系统完成的。是的,操作系统会将线程分配到所有核心上运行,包括Java线程。 - JB Nizet
1
你的问题是什么?你是否在询问多线程Java程序是否可以在多核平台上使用多个核心?如果是这样,纯理论的答案是“取决于Java虚拟机,但对于任何实际的JVM,答案都是“是”。 - Solomon Slow
@jameslarge- 我想问一下,如果将线程分配到多个核心(每个核心一个线程),我们是否可以实现真正的并行处理?我感到有些困惑,因为 JVM 调度程序仍然会轮流分配时间片(这意味着两个线程永远无法同时运行)。 - Ouney
1个回答

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接