Процесс может иметь сотни потоков в любой современной ОС без проблем.
Если у вас ограниченная пропускная способность, от 1 до 2 секунд умножить на 28 означает, что 40 секунд - это то, что нужно. Если у вас ограничено время ожидания, оно должно быть быстрее, но без информации все, что я могу предложить, это:
- добавьте логирование в свой код, чтобы убедиться, что он действительно работает параллельно, и что вы случайно не сериализуете свои потоки;
- используйте сетевой монитор, чтобы убедиться, что сетевые запросы выполняются параллельно.
Трудно дать что-то лучше без дополнительной информации.