我有一个Java应用程序部署在Websphere服务器中。我在我的应用程序中使用大小为 150 的线程池。除此之外,应用程序服务器线程也将运行。那么有没有办法确定应用程序中任意时刻可以运行的最大线程数呢?
编辑: 我的意思是有没有办法让线程数在任何时候都不会超过某个固定数字?
I am not creating any other thread in the application.
Using the threadpoolexecutor with size 150 to create any threads.
+application server threads.
所以,我可以说我的应用程序最多可以创建 150 个线程,我可以说应用程序服务器最多创建多少个线程吗?
谢谢
你没有具体的数字,线程的数量受JVM堆大小的限制。线程池的建议线程数等于计算机核心数的两倍。
我猜没有具体的预定义数字,但在线程池的情况下,它是最大整数值。尝试过此代码在我的本地计算机上工作,因此如果线程池最大值将始终为 Integer.MAX_VALUE (当然每个线程池)。
int threadCount=Integer.MAX_VALUE;
ExecutorService executor = Executors.newFixedThreadPool(threadCount);
这完全取决于系统有多少个CPU核心来运行应用程序。
假设一个系统有 10 个 CPU 核心,那么可以同时运行 10 个线程。因此,并行请求数(线程)与 CPU 核心总数成正比。