// Gerry Brönnimann, ib03

public class Crossroads {

	// anfordern_K1() und freigeben_K2() vom
	// Betriebssystem zur verfuegung gestellt


	public class A extends Thread {
		...

		public void run() {
			drive();
			anfordern_K1();
			crossingK1();
			freigeben_K1();
			drive();
			anfordern_K1();
			crossingK2();
			freigeben_K2();
			drive();
		}

		drive() {}

		crossingK1() {}

		crossingK2() {}
	}


	public class B extends Thread {
		...

		public void run() {
			drive();
			anfordern_K1();
			crossingK1();
			freigeben_K1();
			drive();
			anfordern_K1();
			crossingK2();
			freigeben_K2();
			drive();
		}

		drive() {}

		crossingK1() {}

		crossingK2() {}
	}

	A car1 = new A();
	B car2 = new B(),

	public static void main(String[] args) {
		Crossroads cr = new Crossroads();
	}

}
