Pobieranie danych ze strony w wątku.

0

Witam,
Mam taki problem, że dane w wątku nie są pobierane, dostaję null. th.start() powinno mi odpalić metodę run z klasy GSchoolarParser, metoda run powinna odpalić metodę loadDataToDocument, więc pytanie dlaczego dostaję null? Bez używania wątków działa, dostaję zawartość dokumentu.

package gscholar;

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class GSchoolarParser implements Runnable {
	
	private StringBuffer searchUrl;
	private Document document;
	private int connectionTimeoutMs; //10s
	private  Jsoup jSoup;
	
	private String name;
	private String lastname;
	
	
	public GSchoolarParser(int connectionTimeOutMs) {
		super();
		this.connectionTimeoutMs = connectionTimeOutMs;
		searchUrl = new StringBuffer();
		searchUrl.append("https://scholar.google.pl/scholar?q=");
	}
	
	
	public  Document loadDataToDocument(String name, String lastname){
		//https://scholar.google.pl/scholar?q=Albert+Einstein&btnG=&hl=en&as_sdt=0%2C5
		searchUrl.append(name);
		searchUrl.append("+");
		searchUrl.append(lastname);
		searchUrl.append("&btnG=&hl=en&as_sdt=0%2C5");
		try
		{
			this.document = Jsoup.connect(searchUrl.toString()).timeout(connectionTimeoutMs).userAgent("Chrome").get();
			return document;
		}
		catch(IOException e)
		{
			e.printStackTrace();
			return null;
		}
		catch(Exception e){
			e.printStackTrace();
			return null;
		}
	}

	public Document getDocument() {
		return document;
	}


	public void run() {
		// TODO Auto-generated method stub
		 loadDataToDocument(name, lastname);
		
	}
}

 
package gscholar;

import javax.print.Doc;

import org.jsoup.nodes.Document;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		GSchoolarParser gSchoolarParser = new GSchoolarParser(10000);
		gSchoolarParser.setName("Albert");
		gSchoolarParser.setLastname("Einstein");
		//gSchoolarParser.loadDataToDocument("Albert", "Einstein"); to bez watkow dziala
		Thread th = new Thread(gSchoolarParser);
		th.start();
		System.out.println(gSchoolarParser.getDocument());
		
	}

}

1

Wątek główny kończy działanie, przed wątkiem th. Użyj metody join(), żeby wątek th miał możliwość zakończenia operacji przed głównym.

coś w stylu:

    
    public static void main(String[] args) {
        GSchoolarParser gSchoolarParser = new GSchoolarParser(10000);
        Thread th = new Thread(gSchoolarParser);
        th.start();
        try {
			th.join();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1