Допустим, у вас есть поток, который выполнит остальные, скажем WorkerThread.
В WorkerThread вы можете поместить вызываемые потоки в массив TThread, TThreadList, TList, в основном, в зависимости от того, что вам удобнее.
Затем в цикле for запустите каждый из них. Теперь, так как вы не хотите, чтобы они запускались одновременно, у вас есть 2 способа ожидания запуска потока, либо используйте какой-либо флаг и слушайте событие OnTerminate потока, которое при получении запуска устанавливает флаг, или используйте
WaitForSingleObject(Thread.Handle, INFINITE);