java - 有多少个线程可以并行运行?

标签 java multithreading concurrency

<分区>

我正在学习 Java 中的多线程和并发。阅读大量关于 stack-overflow 和在线的帖子。但是没有清零。所以请多多包涵。

首先我的疑问是,有人说可以同时运行的线程数等于(n = 处理器核心数)是否正确?我真的不确定这个说法。

但是我读到我们可以在 JVM 中创建我们想要的线程,这只取决于我们分配给 JVM 的内存。是否正确?

我们应该如何决定一个 java 程序并行运行的线程数?它与处理器内核的某个地方有关吗?

最佳答案

number of threads can run in parallel is equivalent to (n= number of processor cores)

是的,这个说法是正确的。

But I have read that we can create as much threads we want in JVM, it only depends upon the memory we have allocated to JVM. Is it correct ?

理论上是的。您可以在 JVM 中创建任意数量的 Threads,直到出现 OutOfMemoryError。但是创建 Threads 是一项代价高昂的任务,因此作为最佳实践,请考虑改用共享线程池。这可以使用 ExecutorService 框架来实现。

关于java - 有多少个线程可以并行运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52676163/

相关文章:

java - 如何确保 Java 中的内存可见性?

JavaFX:来自封装变量的服务类更新消息

java - Lucene/Solr - 索引出版物/文本

java - 无法为 java.util.List Retrofit 2.0.0-beta2 创建转换器

c++ - QThread 中未收到 udp 数据包

c# - 如何退出所有正在运行的线程?

Java:Object.wait() 导致执行的主线程从测试返回

java - 旋转 jlabel java swing

c++ - 我应该使用 std::atomic 还是 std::mutex 来避免线程竞争?

concurrency - 从不同的 goroutine 访问一个 channel