Habe folgendes Programm...
Jetzt möchte ich die Simulation Fahrzeug-Brücke so verändern, dass entweder 3 PKW zusammen oder 1 PKW und ein LKW gleichzeitig auf der Brücke sein können.
(1 PKW hat die Last 1, 1 LKW die Last 2)
komm aber irgendwie nicht wirklich auf die Lösung

Java:
public class Fahrzeug extends Thread {
static Bruecke bruecke = new Bruecke(3); // bruecke mit last 3 belastbar
String typ = "kfz";
int last = 1, maxkfz=1000, mintime=2000, addtime=3000; // 2 ... 5 sekunden
// das semaphore hat zu beginn den wert 1
static Semaphore s=new Semaphore(1);
// HIER den kritischen bereich schuetzen
public void losfahren(String k) {
s.p();
bruecke.befahren(k, last);
s.v();
}
public static void main(final String[] args) {
// fahrzeuge erzeugen
Fahrzeug f1 = new Fahrzeug("lupo", 1);
Fahrzeug f2 = new Fahrzeug("mini",1);
Fahrzeug f3 = new Fahrzeug("clio",1);
Fahrzeug f4 = new Fahrzeug("MAN",2);
// threads starten
f1.start();
f2.start();
f3.start();
f4.start();
}
public Fahrzeug(String _typ, int _last) {
typ=_typ;last=_last;
}
void warten(){
try {
int wartezeit = (int)(Math.random()*addtime)*last + mintime;
Thread.sleep(wartezeit);
}catch (Exception e){};
}
// neue fahrzeuge generieren
public void run() {
for (int i=0;i<maxkfz;i++){
warten(); // zufaellige zeit warten, dann ein fahrzeug losschicken
String kfz=typ+"\t"+i;
losfahren(kfz);
}
}
}
Jetzt möchte ich die Simulation Fahrzeug-Brücke so verändern, dass entweder 3 PKW zusammen oder 1 PKW und ein LKW gleichzeitig auf der Brücke sein können.
(1 PKW hat die Last 1, 1 LKW die Last 2)
komm aber irgendwie nicht wirklich auf die Lösung
Zuletzt bearbeitet: