Even if you're using a thread pool (which is better than creation of numerous threads), having unlimited number of threads is usually a common fallacy. There are cases when you want unlimited number of threads (a typical example: demonstration of threading capabilities), but such cases are relatively rare.
Best schema is using fixed number of threads; and usually this is quite possible. (I don't say "constant number of threads"; number of threads can be defined in configuration file; after all file are created, their number is not changed anymore: example: you have N devices which require N * 2 + 1 threads.)
If you say "does it wait to start a thread until one closes", it is already the indication that in fact you don't need those two thread. You task also looks like you don't really need unlimited number of threads.
My recent answer will give you a better idea:
I'm trying to figure if I need to "restart" my thread each time new data comes in[
^].
—SA