java - 是否有一个 Java 线程池对象可以在可用内核之间自动对线程进行负载平衡,或者这是由 JVM 为您完成的?

标签 java multithreading threadpool multicore threadpoolexecutor

是否有一个 Java 线程池对象可以在可用内核之间自动对线程进行负载平衡,或者这是由 JVM 为您完成的?

最佳答案

由于(大多数)JVM 使用 native 线程,线程的调度由操作系统负责。很可能仍然存在 JVM 的“绿色线程”实现(或者至少是它们的选项,尤其是在较旧的 JVM 上),但由于“绿色线程”是由 JVM 本身实现的,因此它们往往无法跨内核扩展。使用 native 线程的主要目标是多处理器兼容性。 JVM 通常不会在操作环境中以足够低的级别运行以控制机器的 CPU 等资源。

我一直在限定哪个 JVM,因为虽然绝大多数人使用 Oracle/OpenJDK JVM,但还有其他 JVM、较旧的 JVM、嵌入式硬件上的 JVM 的行为与 Oracle/OpenJDK JVM 不同。

关于java - 是否有一个 Java 线程池对象可以在可用内核之间自动对线程进行负载平衡,或者这是由 JVM 为您完成的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25813990/

相关文章:

java - 已 sleep 线程上的 Sleep() 方法

java - Thread.setName(name) 注意事项

java - 如何使用 WatchService 监视子目录的变化? ( java )

java - FileChooser.showOpenDialog 在框架顶部显示默认的 Java 图标

java - Java 中没有同步的线程安全单例?

python - 使用 flask 的 socketio 扩展从线程发出

java - 使用来自另一个构造函数的对象指定参数重新调整数组列表

java - 从不同线程修改 Android View

elasticsearch - 显示和更改参数 threadpool.bulk.queue_size

C++,当每个工作线程必须执行几个不同的任务时,如何为任务实现线程池