All pastes #556402 Raw Edit

Mine

public text v1 · immutable
·published 2007-06-10 15:43 UTC
rendered paste body
package lab4_2;


class ProducentWyj extends Thread 
{
	private Pudelko pudelka[] = new Pudelko[4];
	private int m_nLiczba;
	
	public ProducentWyj(Pudelko []c, int liczba) 
	{
		for(int i=0; i<c.length; i++)
			pudelka[i] = c[i];
		this.m_nLiczba = liczba;
	}
	public void run() 
	{
		for (int i = 0; i < 10; i++) 
		{
			for(int j=0; j<4; j++)
			{
				pudelka[j].wloz(i);
				System.out.println("Producent #" + this.m_nLiczba + " wlozyl: " + i + " do pudelka : "+j);
			}
			try{
				sleep((int)(Math.random() * 500));
			} 
			catch (InterruptedException e) {  }
		}
	}
}

class ProducentWej extends Thread 
{
	private Pudelko pudelka[] = new Pudelko[4];
	private int m_nLiczba;
	
	public ProducentWej(Pudelko []c, int liczba) 
	{
		for(int i=0; i<c.length; i++)
			pudelka[i] = c[i];
		this.m_nLiczba = liczba;
	}
	public void run() 
	{
		for (int i = 0; i < 10; i++) 
		{
			int wartosc;
			for(int j=0; j<4; j++)
			{
				wartosc = pudelka[j].wez();
				System.out.println("Producent #" + this.m_nLiczba + " otrzymal " + wartosc + "od konsumenta : "+j);				
			}
			try 
			{
				sleep((int)(Math.random() * 500));
			} 
			catch (InterruptedException e) {  }
		}
	}
}

class Konsument extends Thread 
{
	private Pudelko pudelko1,pudelko2;
	private int m_nLiczba;
	public Konsument(Pudelko c1, Pudelko c2, int Liczba) 
	{
		pudelko1 = c1;
		pudelko2 = c2;
		this.m_nLiczba = Liczba;
	}
	public void run() 
	{
		int wartosc = 0;
		for (int i = 0; i < 10; i++) 
		{
			wartosc = pudelko1.wez()*10;
			System.out.println("Konsument #" + this.m_nLiczba + " wyjal: " + wartosc);
			try{
				sleep((int)(Math.random() * 500));
			} 
			catch (InterruptedException e) {  }
		}
		pudelko2.wloz(wartosc);
	}
	
}


class Pudelko 
{
	private int m_nZawartosc;   // to jest znienna warunkowa
	// do której dost?p synchronizujemy, (omówione pó?niej)
	private boolean m_bDostepne = false;
	public synchronized int wez() 
	{
		while (m_bDostepne == false) 
		{
			try 
			{	wait(); } 
			catch (InterruptedException e) { }
		}
		m_bDostepne = false;
		notifyAll();
		return m_nZawartosc;
	}
	public synchronized void wloz(int wartosc) 
	{
		while (m_bDostepne == true) 
		{
			try 
			{
				wait();
			} 
			catch (InterruptedException e) { }
		}
		m_nZawartosc = wartosc;
		m_bDostepne = true;
		notifyAll();
	}
}

class ProdKonsTest 
{
	public static void main(String[] args) throws Exception
	{
		Pudelko c1[] = new Pudelko[4];
		Pudelko c2[] = new Pudelko[4];
		for(int i=0; i<4; i++){
			c1[i] = new Pudelko();
			c2[i] = new Pudelko();
		}
		
		ProducentWyj p1 = new ProducentWyj(c1, 1);
		ProducentWej p2 = new ProducentWej(c2, 2);
		
		Konsument k1 = new Konsument(c1[0], c2[0], 0);
		Konsument k2 = new Konsument(c1[1], c2[1], 1);
		Konsument k3 = new Konsument(c1[2], c2[2], 2);
		Konsument k4 = new Konsument(c1[3], c2[3], 3);
		p1.start();
		k1.start();
		k2.start();
		k3.start();
		k4.start();
		pauza(); 
	}
	static void pauza() throws java.io.IOException
	{
		System.out.println("Nacisnij Enter...");
		System.in.read();
	}
}