

public class Kreuzung
{
	private static Semaphore k1 = new Semaphore(1);
	private static Semaphore k2 = new Semaphore(1);

	public class A extends Thread
	{
		public A()
		{
			start();
		}

		public void run()
		{
			while(true)
			{
				if (position == k1)
				{
					anfordern_k1();
					// Kreuzung überqueren
					freigeben_k1();
				}

				if (position == k2)
				{
					anfordern_k2();
					// Kreuzung überqueren
					freigeben_k2();
				}
			}
		}
	}

	public class B extends Thread
	{
		public B()
		{
			start();
		}

		public void run()
		{
			while(true)
			{
				if (position == k1)
				{
					anfordern_k1();
					// Kreuzung überqueren
					freigeben_k1();
				}

				if (position == k2)
				{
					anfordern_k2();
					// Kreuzung überqueren
					freigeben_k2();
				}
			}
		}
	}


}