Java FixedThreadPool 中是否有最大尺寸参数?
Is there a maximum size parameter in Java FixedThreadPool?
我已经运行测试了JavaFixedThreadPool的大小被修改为一个变量。通过研究 FixedThreadPool,您似乎应该能够在内存允许的情况下在池中拥有尽可能多的线程。
我的 i7 4 核机器可以轻松处理超过 4000 个“正常”线程,但是将线程池大小更改为 1024 以上会导致我的测试死锁。同样的 1024 线程池死锁发生在 M1 macbook 和 2 核 macbook air 上。 ThreadPool 是否有设置最大值?对于在那之前的尺寸,所有机器都可以正常工作。
限制不在 jvm 内存中,而是在每个用户线程(进程)限制中 OS。
在 linux 或 Mac OS 中,您可以通过 ulimit -u 进行检查。
在这里你可以找到更多信息
Maximum number of threads per process in Linux?
当您使用 Executors.newFixedThreadPool( nb ) 创建 ThreadPoolExecutor 时,不会创建任何线程,并且每个线程只需要少量内存(如果实现使用 LinkedList 或映射来保留 Worker,则可能为零(线程))
这里有其他有用的信息
Maximum number of threads in a JVM?
我已经运行测试了JavaFixedThreadPool的大小被修改为一个变量。通过研究 FixedThreadPool,您似乎应该能够在内存允许的情况下在池中拥有尽可能多的线程。
我的 i7 4 核机器可以轻松处理超过 4000 个“正常”线程,但是将线程池大小更改为 1024 以上会导致我的测试死锁。同样的 1024 线程池死锁发生在 M1 macbook 和 2 核 macbook air 上。 ThreadPool 是否有设置最大值?对于在那之前的尺寸,所有机器都可以正常工作。
限制不在 jvm 内存中,而是在每个用户线程(进程)限制中 OS。 在 linux 或 Mac OS 中,您可以通过 ulimit -u 进行检查。 在这里你可以找到更多信息 Maximum number of threads per process in Linux?
当您使用 Executors.newFixedThreadPool( nb ) 创建 ThreadPoolExecutor 时,不会创建任何线程,并且每个线程只需要少量内存(如果实现使用 LinkedList 或映射来保留 Worker,则可能为零(线程))
这里有其他有用的信息 Maximum number of threads in a JVM?