Variable aus einem Thread ansprechen

ceene

Erfahrenes Mitglied
Hallo ihr lieben.

Ich habe da mal eine kleine Frage zu Threads. Ich habe in einem Programm einige SQL-Abfragen die zur Zeit noch hintereinander laufen. Zur Zeit ist das auch noch alles ok, aber wenn sich die Datenbank weiter füllt, was sie tun wird, dann wird es immer länger dauern bis die Ergebnisse da sind.

Nun meine Frage: Gibt es eine möglichkeit die einzelnen Abfragen in Threads aufzuteilen und die Ergebnisse dann abzufragen?

Bin für jede Hilfe dankbar
 
Habe was gefunden, aber komme da nicht richtig weiter.
Hoffe mir kann wer helfen.
Meine Hauptseite:
Code:
.......
r = stm.getResultSet();
r.beforeFirst();
stm = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
stm.execute(sql);
r = stm.getResultSet();*/
Collection<SearchInTableToHausident> search = null;
ResultSet rp = null;
int z = 0;
while(r.next())
{
	SearchInTableToHausident temp = new SearchInTableToHausident(r.getString(1), hausIdent, getVname(), getNname(), getTel(),	getMail(), ortsCode, strassenCode, getHsnr()); 
	search.add(temp);
}
ExecutorService executor = Executors.newCachedThreadPool();
List<Future<ResultSet>> ret = executor.invokeAll(search);
.......

Die Seite SearchInTableToHausident
Code:
package src.klassen;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.Types;
import java.util.concurrent.Callable;

import oracle.jdbc.OracleCallableStatement;
import oracle.jdbc.pool.OracleDataSource;
import src.klassen.*;

public class SearchInTableToHausident implements Callable<ResultSet> {
	//Variablen
	private String sourceKey;
	private String hausident;
	private String persId;
	private String vname;
	private String nname;
	private String tel;
	private String mail;
	private String hausnr;
	private String ortsCode;
	private String strassenCode;
	private ResultSet rs = null;
	private byte[] test = null;
	
	//Zugangsdaten für die Datenbankverbindung
	Zugangsdaten dat = new Zugangsdaten();
	
	public SearchInTableToHausident(String sk, String h, String vn, String nn, String t, String m,
			String oc, String sc, String hn)	{
		sourceKey = sk;
		hausident = h;
		vname = vn;
		nname = nn;
		tel = t;
		mail = m;
		hausnr = hn;
		ortsCode = oc;
		strassenCode = sc;
	}
	@Override
	public ResultSet call() throws Exception {
			
		....
			sql+=" ORDER BY p.LASTNAME, p.FIRSTNAME";
			con = ds.getConnection();
			stm = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
			stm.execute(sql);
			rs = stm.getResultSet();
		.....
		return rs;
	}
	//---------------------------------------------------------------
	private String getPersIdFromNumber(String nummer, String quelle)		{
		......
}

Ich möchte alle Callable-Teile zur gleichen Zeit absetzen und auch alle Ergebnisse wiederbekommen.
Leider bekomme ich immer eine NullPointerException.......kann mir jemand weiterhelfen?
Ich habe es vorher als einfaches Callable-Teil versucht, also mit nur einem anderen Thread und das klappte super und ohne Probleme.
 

Neue Beiträge

Zurück