Once all of the threads are started, the main() loops for 30 seconds for all threads to finish, and then it kills all threads still running.
The thread can be running for more than 30 seconds because the connection has not yet started. When this happens, the thread is killed and the URL isnt included in the deadlinks dataset.
The 30 seconds should be configurable, and when that time has expired the links should be presumed dead.