A multi-threaded WebCrawler implemented in Java using a Semaphore