Hallo,
ich möchte Objekte (Autos) mit einer bestimmten Geschwindigkeit von A nach B fahren lassen.
zB Strecke: 1000 Meter, AutoA fährt 100 km/h , Auto B fährt 200 km/h,
meine fahren() Methode sieht so aus, dass sich die Position des Autos immer um +1 verschiebt, der Thread schläft anschließend eine Weile (abhängig von der Geschwindigkeit des Autos.).
Diese methode steckt in einer while() Schleife, die so lange läuft bis mein Auto das Ziel (ende der Strecke) erreicht hat.
Ich erzeuge 2 Autos mit Unterschiedlichen Geschwindigkeiten (Audi und Ferrari), der Ferrari fährt schneller als der Audi und müsste eigentlich früher eintreffen, stattdessen passiert folgendes:
Scheinbar hängt der Thread in meiner Schleife fest??
Hab das hier in meiner Auto Klasse stehen:
Komm ich aus so einer Schleife überhaupt raus?
Hab ich das generell falsch gelöst oder gibt es eine möglichkeit den Ferrari doch noch parallel zu starten?
gruß
Kaji
ich möchte Objekte (Autos) mit einer bestimmten Geschwindigkeit von A nach B fahren lassen.
zB Strecke: 1000 Meter, AutoA fährt 100 km/h , Auto B fährt 200 km/h,
meine fahren() Methode sieht so aus, dass sich die Position des Autos immer um +1 verschiebt, der Thread schläft anschließend eine Weile (abhängig von der Geschwindigkeit des Autos.).
Diese methode steckt in einer while() Schleife, die so lange läuft bis mein Auto das Ziel (ende der Strecke) erreicht hat.
Ich erzeuge 2 Autos mit Unterschiedlichen Geschwindigkeiten (Audi und Ferrari), der Ferrari fährt schneller als der Audi und müsste eigentlich früher eintreffen, stattdessen passiert folgendes:
Java:
Audi fährt...
Audi fährt...
...
...
Audi fährt...
Audi am Ziel...
Ferrari fährt...
Ferrari fährt...
...
...
Ferrari fährt...
Ferrari am Ziel...
Scheinbar hängt der Thread in meiner Schleife fest??
Hab das hier in meiner Auto Klasse stehen:
Java:
public synchronized void fahren(int geschwindigkeit) throws InterruptedException {
while (position.getPosition() < this.strasse
.getLaenge()) {
position.drive();
System.out.println(this.name + " fährt...");
Thread.sleep(1000 - (this.geschwindigkeit * 10));
}
}
@Override
public void run() {
// TODO Auto-generated method stub
try {
// while (this.strasse.autoPosition.getPosition() < this.strasse
// .getLaenge()) {
this.fahren(this.geschwindigkeit);
System.out.println(this.name + " am Ziel...");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Komm ich aus so einer Schleife überhaupt raus?
Hab ich das generell falsch gelöst oder gibt es eine möglichkeit den Ferrari doch noch parallel zu starten?
gruß
Kaji