У меня есть приложение для загрузки с тяжелой загрузкой, которое работает на экземпляре AWS t3.large EC2 с двумя виртуальными процессорами.
У меня есть два этапа расчета, и на первом этапе я намерен использовать supplyAsync с пулом потоков из 2 потоков из-за 2vcpus.
Второй шаг включает в себя разветвленное соединение (происходит после завершения шага 1). Однако при этом, если я использую commonPool, который я могу, потому что он выполняет только вычисления, это будет означать, что он работает с parallelism = 1. Это означает, что JVM создаст поток для каждой задачи (ссылка: https://dzone.com/articles/be-aware-of-forkjoinpoolcommonpool). Я ожидаю, что количество подзадач будет больше 10. Поэтому создание 10 или более потоков кажется излишним из-за потребляемой памяти.
Имеет ли смысл использовать подход fork join, если у меня всего 2 виртуальных процессора?
1
. Поэтому создание 10 или более потоков кажется излишним из-за потребляемой памяти - по крайней мере, это тоже немного неправильно. стеки потоков заполняются ленивым образом и обычно довольно малы. В целом, я нахожу ваш вопрос непонятным. - person Eugene   schedule 01.06.2021