当 vCPU 为 2 时,Java runAsync 和 ForkJoin

问题描述

我有一个运行在 AWS t3.large EC2 实例上的计算量大的 Spring Boot 应用程序,有 2 个虚拟 cpu

我在计算中有两个步骤,对于第一步,我打算使用带有 2 个线程的线程池的 supplyAsync,因为有 2vcpus。

第二步涉及分叉连接(在第一步完成后发生)。但是,有了这个,如果我使用 commonPool,我可以,因为它只进行计算,这意味着它在并行度 = 1 上运行。这意味着 JVM 将为每个任务创建一个线程(参考:https://dzone.com/articles/be-aware-of-forkjoinpoolcommonpool) .我预计子任务会超过 10 个。因此,由于它消耗的内存,创建 10 个或更多线程感觉有点矫枉过正。

如果我只有 2 个 vcpus,使用 fork join 方法有意义吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)