Witam serdecznie
Napisałem program przedstawiający parking. Wszystko działa poprawnie, tylko że parking powinien posiadać 2 niezależne od siebie bramy wjazdowe. W tej chwili te 2 bramy są "sztuczne" bo w rzeczywistości jest to jedna, tylko zmienia się jej numer.
W jaki sposób zrobić aby te 2 bramy były niezależne od siebie?
Pozdrawiam i z góry dziękuję.
package parkingowy;
import java.util.Random;
public class Parking {
private int ileMiejsc;
Parking (int ile)
{
this.ileMiejsc = ile;
}
public synchronized void bramaWjazdowa1 (Auto Samochod)
{
System.out.println("Samochod "+ Samochod.nrSamochodu +" podjechal pod brame 1.");
try
{
Thread.sleep(500);
}
catch (Exception e) {}
while (this.ileMiejsc == 0)
{
try
{
wait();
}
catch (Exception e) {}
}
this.ileMiejsc--;
System.out.println("Samochod "+ Samochod.nrSamochodu +" zajal miejsce na parkingu.");
try
{
Thread.sleep(200);
}
catch (Exception e) {}
}
public synchronized void bramaWjazdowa2 (Auto Samochod)
{
System.out.println("Samochod "+ Samochod.nrSamochodu +" podjechal pod brame 2.");
try
{
Thread.sleep(500);
}
catch (Exception e) {}
while (this.ileMiejsc == 0)
{
try
{
wait();
}
catch (Exception e) {}
}
this.ileMiejsc--;
System.out.println("Samochod "+ Samochod.nrSamochodu +" zajal miejsce na parkingu.");
try
{
Thread.sleep(200);
}
catch (Exception e) {}
}
public synchronized void bramaWyjazdowa (Auto Samochod)
{
System.out.println("Samochod "+ Samochod.nrSamochodu +" podjechal pod brame wyjazdowa.");
try
{
Thread.sleep(500);
}
catch (Exception e) {}
this.ileMiejsc++;
notifyAll();
System.out.println("Samochod "+ Samochod.nrSamochodu +" wyjechal z parkingu.");
}
public static void main(String[] args) {
Parking parking = new Parking(3);
Auto samochody[] = new Auto[7];
Random losuj = new Random();
int brama;
for(int i=0; i<samochody.length; i++)
{
brama = losuj.nextInt(2);
samochody[i] = new Auto(parking, i+1, brama);
samochody[i].start();
}
}
}
package parkingowy;
public class Auto extends Thread {
private Parking parking;
public int nrSamochodu, brama;
Auto(Parking parking, int numer, int brama)
{
this.parking = parking;
this.nrSamochodu = numer;
this.brama = brama;
}
public void run ()
{
System.out.println("Samochod "+ this.nrSamochodu +" jezdzi po miescie...");
if(this.brama ==1)
this.parking.bramaWjazdowa1(this);
else
this.parking.bramaWjazdowa2(this);
try
{
sleep(3000);
}
catch (Exception e) {}
this.parking.bramaWyjazdowa(this);
}
}