ein Thread-problem

vaporizer

Erfahrenes Mitglied
Hallo
Ich bin grade dabei etwas zu herumexperimentieren und hab ein Problem mit meinen Threads.
Ich will in einer Schleife mehrere Threads erstelln,
die main Methode in der Klasse scan sieht folgendermaßen aus:
Code:
public class scan()
{
    public static void main(String args[])
	{
		if(args.length != 2)
		{
			System.out.println("Usage: IpEnd IpStart");
		}
		scan sc = new scan("xx.xx.xx.1","xx.xx.xx.10");
		while(!(sc.ipstart.getIp().equals(sc.ipend.getIp())))
		{
			Multiscan thr = new Multiscan(sc.ipstart.getIp());
			thr.start();
			if(sc.conn)
			{
				System.out.println(sc.ipstart.getIp()+" anonymous accepted");
			}
			else
			{
			}
			sc.ipstart.ipUp();
		}
		System.out.println("Scan complete");
		System.exit(1);
	}
die Klasse Multiscan sieht folgender massen aus:
Code:
class Multiscan 
extends Thread
{
	scan scn = new scan();
	  
	private String ip;
	
	public Multiscan(String ip)
	{
		this.ip=ip;
	}
	public void run()
	{
		if(scn.checkFtp(ip))
		{
			scn.setConn(true);
		}
		else
		{
			scn.setConn(false);
		}
	}
}
da ich nicht allzuviel Erfahrung habe mit Threads, weiß ich nicht mehr weiter,
hoffe es kann mir jemand helfen.
Das einzige was er macht ist die Zeile usage.... schreiben
und danach scan complete,
scannen tut er aber nichts.
 
Zuletzt bearbeitet:
also wenn ich es mit dem Debuger durchlaufen lasse,
dann funktioniert es!
kann es sein das bei dem normalen Programmfluss, der sich ja im hundertstel bereich abspielt,
der Thread nicht fertig laufen kann?
welche möglichkeiten gibts da, das zu ändern,
 
Moin,
üblicherweise können solche sog. "racing-conditions" abgefangen werden, indem die betroffenen Methoden/Attribute als synchronized deklariert werden. Das Problem tritt auf, wenn mehrere Threads gleichzeitig auf ein und dasselbe Objekt (bzw. Attribut) zugreifen und dieses lesen/verändern wollen.
 
Zurück