на всякий случай еще раз свою мысль:
имею возможность запускать, к примеру, 50 потоков
каждые 5 сек проверяю БД на наличие задачи. в задаче может быть 5 выполнений, может быть 500.
пытаюсь реализовать таким образом, чтобы каждые 5 сек стартовали потоки, если есть свободные и выполняли свои задачи.
50 потоков
задача1, 50 заданий, стартанули все 50 потоков
спим 5 сек
задача2, 10 заданий, не стартануло нисколько, все потоки заняты
спим 5 сек
задача2, 10 заданий, освободилось 6 потоков, стартануло 6 потоков
спим 5 сек
задача2, осталось 4 задания, освободилось 20 потоков, стартануло 4 потока
спим 5 сек
задача3.......