Buscar

codigo 26.10

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

import java.util.concurrent.locks.Lock;
import java.uti.concurrent.locks.Reentrantlock;
import java.util.concurrent.locks.Condition;
public class SynchronizeBuffer implements Buffer
{
	private final lock accesslock = new Reentrantlock();
	
	private final Condition canWrite= accessLock.newCondition();
	private final Condition canread - accesslock.newCondition();
	
	private int buffer = -1;
	private boolean occuped = false;
	
	public void set(int value)throws Interruptedexception
	{
		accesslock.Lock();
		
		try
		{
			while (occupied)
			{
				System.out.println("Producer tries to rite.");
				displayState("Buffer full. Producer waits.");
				canWrite.await();
			}
		buffer = value;
		occuped =true;
		displayState("Producer writes" + buffer);
		}
		finally
		{
			accessLock.unlock();
		}
	}
	public int get() throws InterruptedException
	{
		int readValue = 0;
		accesslock.lock();
		try
		{
			while (!ocupped)
			{
				System.out.println("Consumer tries to read.");
				displayState("Buffer empty. Consumer waits");
				canRead.await();
			}
			occupied = false;
			
			readValue = buffer;
			displayState("Consumer reads" + readValue);
			canWrite.signal();
		}
		finally
		{
			acessLock.unlock();
		}
		return readValue;
	}
	public void displayState(String operation)
	{
		System.out.println("%~40s%d\t\t%b\n\n", operation, buffer, occupied);
	}
}
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class SharedBufferTest2
{
	public class void main( String[] args )
	{
		ExecutorService application = Executors.newcCachedThreadpool();
		Buffer sharedLocation = new SynchronizedBuffer();
		System.out.printf("%~40%s\t\t%s\n%~40s%s\n\n", "Opration", "Buffer", "Ocuppied", "---------", "------\t\t--------");
		
		apprication.execute(new Producer(sharedlocation));
		application.execute(new Consumer(sharedloction));
		
		application.shutdown();
	}
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais