Вы не предоставили много подробностей, поэтому я могу только строить догадки на данный момент. Я бы сказал, что большинство этих тем ничего не делают. Те, кто что-то делают, вероятно, связаны с IO, что означает, что они тратят большую часть времени на ожидание ответа внешнего ресурса.
Теперь поговорим о «1000 ~ 2000 потоков». Есть очень мало случаев (может быть, ни одного), когда иметь такое количество потоков - хорошая идея. Я думаю, что ваша текущая проблема - прекрасный пример того, почему. Большинство из этих потоков (по-видимому, в любом случае) ничего не делают, кроме траты ресурсов. Если вы хотите обрабатывать несколько задач параллельно, особенно если они связаны с вводом-выводом, лучше воспользоваться объединенными ресурсами, такими как ThreadPool
или с помощью Task Parallel Library .