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);
	}

}