java - 需要澄清并行处理

标签 java multithreading parallel-processing

例如,如果我使用双核处理器使用线程编写java程序。这是否意味着程序执行顺序并且它只会在双核中使用单核

<小时/>

例如,如果我使用双核处理器使用线程和同步编写java程序。这是否意味着程序执行并行并且它将使用所有可用的核心(在本例中是两个核心)?

如果我的推理完全错误,那么线程、核心并行性之间的关系是什么?

最佳答案

首先,JVM 有许多后台线程,即使用户代码从不派生另一个线程,这些线程也会使用多个 CPU 和内核。例如,如果可能的话,垃圾收集器将在另一个 CPU 中同时运行,而不管用户代码如何。

如果您的用户代码从不派生另一个线程,则 JVM 永远不会在多个 CPU 中同时运行您的代码。如果您确实使用多个线程编写程序,则不能保证它将在多个 CPU 中运行,但肯定更有可能。这在很大程度上取决于操作系统上正在运行的其他内容以及线程的阻塞程度。如果您的线程消耗大量 CPU 周期并在现代操作系统上运行任意时间,那么是的,您的程序将使用两个 CPU。

您可以在 Linux 操作系统(和其他 Unixen)上验证这一点,方法是观察您的进程是否在任何时候消耗超过 100% 的 CPU。您还可以使用 ps 选项来显示底层线程及其 CPU 使用情况。在这里查看我的答案:Concurrency of posix threads in multiprocessor machine

关于java - 需要澄清并行处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13263409/

相关文章:

java android SlidingUp 库 - WebView 不滚动

java - 如何使用 Spring Boot 在 jetty 嵌入式服务器中以编程方式启用和公开 jmx beans?

java - java中如何在一个线程完成时结束其他线程的处理

c# - Ninject、Parallel.ForEach 和 InThreadScope()

Java在读取文件但同时使用流时避免java.lang.OutOfMemoryError

multithreading - Spring 批处理 : problems (mix data) when converting to multithread

java - 改进操作顺序并测试值是否有小数

java - 解析 xml 时出错 : unbound prefix from com. google.android.gms.ads.AdView

java - 双重检查锁定的乱序写入

r - clusterExport到R并行中的单线程