Работает долго, даже с пулом потоков.
Заблуждение. Если метод занимает 10 секунд, он занимает 10 секунд в и из потока. Поток не может магически улучшить скорость функции.
Что делает пул потоков, так это то, что он позволяет вам запускать вызовы методов X параллельно, но ни один из них не становится быстрее сам по себе.
Теперь я бы начал с вызова - видите, у вас есть некоторый SQL, который не должен выполняться более миллисекунды, поэтому, если он медленный, я могу предложить либо перегруженное оборудование, либо какой-то не очень умный человек, не знающий что такое индекс, делающий операторы SQL очень-очень медленными?
Также обратите внимание, что пул потоков, если он не был предварительно настроен, МЕДЛЕННО наращивает потоки - как я думаю, по одному в секунду. Так что, если вы много в очереди ... вы мертвы.
Наконец, почему, черт возьми, вы используете пул потоков, а не библиотеку задач? Это не так уж и ново .... и имеет более приятный API и больший контроль над потоками.
И, наконец, используйте профилировщик, чтобы узнать, на что тратится время. Это не так сложно. Программирование без профилировщика - это все равно что пытаться готовить, не нагревая ничего - вы ограничены в том, что вы делаете Профессиональный повар? Используйте профессиональные инструменты.