0
我在java中有兩個類需要同時運行 - 一個Crawler類(基本上實現了一個web crawler,並在遇到它時繼續打印url)和一個Indexer類,到目前爲止,它應該只是打印抓取的網址。Java - 更新靜態變量
對於這一點,我的索引類有一個隊列:
public static Queue<String> urls = new LinkedList();
在我爬行類的toVisit()函數,我有以下幾點:
Indexer.urls.add(url) // where url is a String
爬行工作完全很好,因爲它會打印出所遇到的所有網址,但由於某些原因,這些網址不會添加到我的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("=============");
}
代碼:
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());
}
請發佈'toVisit()'方法 – satoshi 2012-03-30 09:18:01
是你運行兩個線程即:1.Crawler線程2.Indexer線程? – cherit 2012-03-30 09:18:58
或偶然是你在一個類加載器中運行Crawler,而另一個類中是否使用索引器? (例如,兩個不同的Web應用程序?) – BigMike 2012-03-30 09:20:16