It is time! You must finish the application. One FBI agent tells you he had a quad-core notebook, and he wanted to test the application on the notebook before running it on the server. You cannot hardcode the threads and you need to do it completely dynamically. The lists are the best solution for this problem and your key to freedom! Let's use them. It is not difficult.
Now, we are going to make some big changes to the application, modifying variables to be lists, or lists of lists, so they can be accessed by multiple threads created dynamically. In order to accomplish that, we must share data between the many threads: