【问题标题】:Does the JVM limit the number of threads an Executor can run?JVM 是否限制 Executor 可以运行的线程数?
【发布时间】:2015-06-11 21:58:11
【问题描述】:

我知道我可以使用一个固定线程池来限制我的程序一次使用的线程数量。如果我使用 cachedThreadPool 并且可以运行 10,000 个线程,那么 JVM 是否会适当地安排它们,以免同时运行太多线程?

【问题讨论】:

  • JVM 根本不会调度它们。操作系统就是这样做的。真正可以同时执行的数量(而不是可运行的)受您拥有的 CPU 和内核数量的限制,而不是字节 JVM。
  • 如果您需要这么多线程,您可能需要重新考虑您的应用程序设计。如果是用于网络 IO,请考虑使用非阻塞套接字。如果它的文件 IO 使用 AsynchronousFileChannel 或仅在有限数量的线程上排队 IO 请求,则旋转更多线程不会使旋转 rust 搜索更快。

标签: java multithreading jvm threadpool


【解决方案1】:

JVM 受操作系统限制。操作系统与虚拟内存、交换空间和堆栈大小限制有关。

下面的三个stackoverflow线程应该解释一下:

【讨论】:

    猜你喜欢
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多