Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JVM是否限制执行器可以运行的线程数?_Java_Multithreading_Jvm_Threadpool - Fatal编程技术网

Java JVM是否限制执行器可以运行的线程数?

Java JVM是否限制执行器可以运行的线程数?,java,multithreading,jvm,threadpool,Java,Multithreading,Jvm,Threadpool,我知道我可以使用fixedThreadPool来限制程序一次使用的线程数量。如果我使用cachedThreadPool,并且可以运行10000个线程,JVM是否会适当地安排它们,以便不会有太多线程同时运行?JVM与操作系统限制有关。操作系统受虚拟内存、交换空间和堆栈大小的限制 下面的三个stackoverflow线程应该解释: Java/JVM限制: Linux限制: 窗口: JVM根本不会安排它们。操作系统就是这样做的。实际上可以同时执行的数量(与可运行的相反)取决于您拥有的CPU和内核的数

我知道我可以使用fixedThreadPool来限制程序一次使用的线程数量。如果我使用cachedThreadPool,并且可以运行10000个线程,JVM是否会适当地安排它们,以便不会有太多线程同时运行?

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

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

  • Java/JVM限制:
  • Linux限制:
  • 窗口:

JVM根本不会安排它们。操作系统就是这样做的。实际上可以同时执行的数量(与可运行的相反)取决于您拥有的CPU和内核的数量,而不是字节JVM。如果您需要那么多线程,您可能需要重新考虑您的应用程序设计。如果是用于网络IO,请考虑使用非阻塞套接字。如果是文件IO,请使用
AsynchronousFileChannel
,或者仅在有限数量的线程上对IO请求进行排队,旋转更多线程不会使旋转速度更快。