【发布时间】:2015-06-11 21:58:11
【问题描述】:
我知道我可以使用一个固定线程池来限制我的程序一次使用的线程数量。如果我使用 cachedThreadPool 并且可以运行 10,000 个线程,那么 JVM 是否会适当地安排它们,以免同时运行太多线程?
【问题讨论】:
-
JVM 根本不会调度它们。操作系统就是这样做的。真正可以同时执行的数量(而不是可运行的)受您拥有的 CPU 和内核数量的限制,而不是字节 JVM。
-
如果您需要这么多线程,您可能需要重新考虑您的应用程序设计。如果是用于网络 IO,请考虑使用非阻塞套接字。如果它的文件 IO 使用
AsynchronousFileChannel或仅在有限数量的线程上排队 IO 请求,则旋转更多线程不会使旋转 rust 搜索更快。
标签: java multithreading jvm threadpool