【问题标题】:Is there a maximum size parameter in Java FixedThreadPool?Java FixedThreadPool 中是否有最大大小参数?
【发布时间】:2021-04-14 23:40:06
【问题描述】:

我一直在运行测试,Java FixedThreadPool 的大小被修改为变量。从研究 FixedThreadPool 看来,您应该能够在内存允许的情况下在池中拥有尽可能多的线程。

我的 i7 4 核机器可以轻松处理超过 4000 个“正常”线程,但是将线程池大小更改为 1024 以上会使我的测试死锁。 M1 macbook 和 2 核 macbook air 会发生相同的 1024 线程池死锁。 ThreadPool 是否有设定的最大值?在此之前,对于所有机器的尺寸,一切正常。

【问题讨论】:

    标签: java multithreading jvm threadpool


    【解决方案1】:

    该限制不存在于 jvm 内存中,而是存在于操作系统每个用户线程(进程)的限制中。 在 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?

    【讨论】:

    • 来晚了,谢谢!
    猜你喜欢
    • 2011-02-25
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-03
    相关资源
    最近更新 更多