Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.List;
- import java.util.*;
- import java.util.concurrent.Semaphore;
- import java.util.concurrent.locks.Lock;
- import java.util.concurrent.locks.ReentrantLock;
- public class Fabrika {
- int max_capacity = 5;
- List<String> products = new ArrayList<>();
- static Semaphore main_semaphore = new Semaphore(1);
- static Semaphore producer_semaphore = new Semaphore( 10);
- static Semaphore consume_semaphore = new Semaphore(10);
- public Fabrika(int capacity) {
- max_capacity = capacity;
- }
- public void produce(String s) throws InterruptedException{
- producer_semaphore.acquire();
- main_semaphore.acquire();
- while(products.size() == max_capacity) {
- main_semaphore.release();
- Thread.sleep(2000);
- main_semaphore.acquire();
- }
- products.add(s);
- System.out.println("Produced " + s);
- main_semaphore.release();
- consume_semaphore.release();
- }
- public void consume() throws InterruptedException {
- consume_semaphore.acquire();
- main_semaphore.acquire();
- while(products.size() == 0) {
- main_semaphore.release();
- Thread.sleep(2000);
- main_semaphore.acquire();
- }
- String s = products.remove(0);
- System.out.println("Consumed " + s);
- main_semaphore.release();
- producer_semaphore.release();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement