Hallo,
ich wollte heute mal ein wenig mit den Methoden von Thread "rumprobieren".
Dazu wollte ich ein Parkhaus simulieren.
Ich möchte das das Parkhaus eine bestimmte größe hat.
Die Autos die Parken wollen, müssen prüfen ob ein Platz frei ist, wenn ja
parken sie, wenn nein, müssen sie warten bis was frei wird.
Allerdings parkt bei mir nur ein auto und fährt dann wieder. Ich weiß leider noch
nicht so richtig wie ich das realisieren kann, das alle Autos parken bis das
parkhaus voll ist und dann warten und erst wieder reinfahren können sobald
wieder plätze frei sind.
Der Code:
Parkhaus:
Auto:
main:
Ich danke für Hilfe
ich wollte heute mal ein wenig mit den Methoden von Thread "rumprobieren".
Dazu wollte ich ein Parkhaus simulieren.
Ich möchte das das Parkhaus eine bestimmte größe hat.
Die Autos die Parken wollen, müssen prüfen ob ein Platz frei ist, wenn ja
parken sie, wenn nein, müssen sie warten bis was frei wird.
Allerdings parkt bei mir nur ein auto und fährt dann wieder. Ich weiß leider noch
nicht so richtig wie ich das realisieren kann, das alle Autos parken bis das
parkhaus voll ist und dann warten und erst wieder reinfahren können sobald
wieder plätze frei sind.
Der Code:
Parkhaus:
Java:
public class Parkhaus implements Runnable {
private boolean[] aAmount = new boolean[10];
private Auto auto;
public Parkhaus (Auto aAuto) {
this.auto = aAuto;
}
public void run() {
for (int i = 0; i < aAmount.length; i++) {
aAmount[i] = false;
}
try {
System.out.println("Auto parkt!");
auto.enter(aAmount);
try {
Thread.sleep((long)(10*Math.random()));
} catch (InterruptedException e) {
e.printStackTrace();
}
} finally {
synchronized (auto) {
auto.notify();
}
}
try {
System.out.println("Auto fährt!");
auto.exit(aAmount);
try {
Thread.sleep((long)(10*Math.random()));
} catch (InterruptedException e) {
e.printStackTrace();
}
} finally {
synchronized (auto) {
auto.notify();
}
}
}
}
Auto:
Java:
public class Auto extends Thread {
public void run() {
System.out.println("Parkaus öffnet!");
synchronized(this) {
Parkhaus parkhaus = new Parkhaus(this);
parkhaus.run();
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("Parkhaus schließt!");
}
public void enter(boolean[] aAmount) {
for (int i = 0; i < aAmount.length; i++) {
if (aAmount[i] == false) {
aAmount[i] = true;
break;
} else {
continue;
}
}
}
public void exit(boolean[] aAmount) {
for (int i = 0; i < aAmount.length; i++) {
if (aAmount[i] == true) {
aAmount[i] = false;
break;
} else {
continue;
}
}
}
}
main:
Java:
public class main {
public static void main(String[] args){
Auto[] autos = new Auto[20];
for (int i = 0; i < autos.length; i++) {
autos[i] = new Auto();
autos[i].run();
}
}
}
Ich danke für Hilfe