M 
		
				
			
		mrmiagi
Gast
Hallo, ich programmiere Gerade an einem Crawler und hoffe mir kann jemand helfen.
Für jeden Crawlprozess soll es einen Thread geben der sich eine gemeinsame Liste der Seiten teilt.
Code zum starten des Thread
	
	
	
	
	
		
	
Der Thread
	
	
	
	
	
		
	
Doch ich habe dann nachher keinen Zugriff mehr auf die Crawlerlist
	
	
	
	
	
		
	
bringt kein ergebniss, wenn ich aber im Thread darauf zu greife geht das.
Warum funktioniert das nicht? ich dachte mir ich übergebe ja eine referenz und bekomme die dann zurück.
Wäre für hilfe sehr dankbar.
			
			Für jeden Crawlprozess soll es einen Thread geben der sich eine gemeinsame Liste der Seiten teilt.
Code zum starten des Thread
		Code:
	
	package client;
public class Crawler {
	
	public Crawler(String url)
	{
		CrawlerList cl = new CrawlerList();
		CrawlerListItem it = new CrawlerListItem(false, url);	
		CrawlerThread main = new CrawlerThread(it);
		CrawlerThread.setCrawlerlist(cl);
		main.start();
		CrawlerThread.getCrawlerlist().print();
		
	}
}Der Thread
		Code:
	
	package client;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Enumeration;
import java.util.Vector;
public class CrawlerThread extends Thread{
	
	private static CrawlerList crawlerlist;
	private static int Instances = 0;
	
	private CrawlerListItem it;
	
	public CrawlerThread(CrawlerListItem it)
	{
		this.it = it;
	}
	
	public void run()
	{
		Instances++;
		
		HTMLPage cursite = null;
		//Seite crawlen
		try {
			cursite = new HTMLPage(new URL(it.getUrl()));
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		//Aus jedem extrahierten Link ein CrawlerListItem machen und zur CrawlerList hinzufügen
		Vector<String> internalLinks = cursite.getInternalLinks();
		
		for(Enumeration el = internalLinks.elements(); el.hasMoreElements();)
		{
			String cururl = (String) el.nextElement();
			crawlerlist.addItem(new CrawlerListItem(false, cururl));
		}
		//Seite als gecrawled marken	
		Instances--;
	}
	public static CrawlerList getCrawlerlist() {
		return crawlerlist;
	}
	public static void setCrawlerlist(CrawlerList crawlerlist) {
		CrawlerThread.crawlerlist = crawlerlist;
	}
}Doch ich habe dann nachher keinen Zugriff mehr auf die Crawlerlist
		Code:
	
	CrawlerThread.getCrawlerlist().print();bringt kein ergebniss, wenn ich aber im Thread darauf zu greife geht das.
Warum funktioniert das nicht? ich dachte mir ich übergebe ja eine referenz und bekomme die dann zurück.
Wäre für hilfe sehr dankbar.
 
				 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		