我在java中有两个需要同时运行的类 - 一个Crawler类(基本上实现了一个Web爬虫,并在遇到它们时不断打印出来)和一个Indexer类,截至目前,应该只是打印被抓取的网址。
为此,我的Indexer类有一个队列:
public static Queue<String> urls = new LinkedList();
在我的Crawler类的toVisit()函数中,我有以下内容:
Indexer.urls.add( url ) // where url is a String
Crawler工作正常,因为它打印出它遇到的所有网址,但由于某种原因,这些网址不会被添加到我的Indexer类的Queue中。知道为什么会这样吗?
Crawler.java中的toVisit()方法如下:
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() );
}
答案 0 :(得分:0)
好的,所以我按照BigMike的建议解决了我的问题。我在我的两个类中实现了Runnable接口,然后在新的第三个类的main函数中将这两个类作为线程运行。
感谢大家的帮助! :)