Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import java.util.concurrent.Semaphore;
- import java.lang.Object;
- import java.nio.Buffer;
- public class BoundedBuffer<E> implements Buffer<E>
- {
- private static final int BUFFER_SIZE=5;
- private E[] buffer;
- private int in, out;
- private Semaphore mutex;
- private Semaphore empty;
- private Semaphore full;
- public BoundedBuffer()
- {
- //buffer is initially empty
- in=0;
- out=0;
- mutex= new Semaphore(1);
- empty= new Semaphore(BUFFER_SIZE);
- full=new Semaphore(0);
- buffer=(E[]) new Object[BUFFER_SIZE];
- }
- public void insert(E item)
- {
- empty.acquire();
- mutex.acquire();
- //add item
- buffer[in]=item;
- in=(in+1)%BUFFER_SIZE;
- mutex.release();
- full.release();
- }
- public E remove()
- {
- E item;
- full.acquire();
- mutex.acquire();
- //remove item
- item=buffer[out];
- out=(out+1)%BUFFER_SIZE;
- mutex.release();
- empty.release();
- return item;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement