У меня есть два класса в Java, которые должны запускаться одновременно - класс Crawler (который в основном реализует веб-сканер и продолжает выводить URL-адреса при его обнаружении), и класс Indexer, который на данный момент,предполагается просто напечатать просканированные URL-адреса.
Для этого у моего класса Indexer есть очередь:
public static Queue<String> urls = new LinkedList();
А в функции toVisit () моего класса Crawler у меня есть следующее:
Indexer.urls.add( url ) // where url is a String
Crawler работает совершенно нормально, поскольку он распечатывает все URL-адреса, с которыми столкнулся, но по какой-то причине эти URL-адреса не добавляются в очередь в моем классе Indexer.Любая идея, почему это может иметь место?
Метод toVisit () из Crawler.java выглядит следующим образом:
public void visit(Page page) {
int docid = page.getWebURL().getDocid();
String url = page.getWebURL().getURL();
String domain = page.getWebURL().getDomain();
String path = page.getWebURL().getPath();
String subDomain = page.getWebURL().getSubDomain();
String parentUrl = page.getWebURL().getParentUrl();
System.out.println("Docid: " + docid);
System.out.println("URL: " + url);
System.out.println("Domain: '" + domain + "'");
System.out.println("Sub-domain: '" + subDomain + "'");
System.out.println("Path: '" + path + "'");
System.out.println("Parent page: " + parentUrl);
Indexer.urls.add( url );
System.out.println("=============");
}
Код из моего класса Indexer:
public static Queue<String> urls = new LinkedList();
public static void main( String[] args )
{
while( urls.isEmpty() )
{
//System.out.println("Empty send queue");
Thread.sleep(sleepTime);
}
System.out.println( urls.poll() );
}