import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Semaphore;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class Factory {
List vaccines = new ArrayList<>();
int max_capacity = 5;
Semaphore fabrika = new Semaphore(1);
Semaphore proizveduvac = new Semaphore(10);
Semaphore kupuvac = new Semaphore(10);
public Factory(int capacity) {
max_capacity = capacity;
}
public void produce_vaccine(String vaccine) throws InterruptedException{
proizveduvac.acquire(); // namali go brojot na permits za proizveduvacot
fabrika.acquire();
while(vaccines.size() == max_capacity) {
fabrika.release();
Thread.sleep(50);
fabrika.acquire();
}
vaccines.add(vaccine);
System.out.println("proizvedna: " + vaccine);
fabrika.release();
kupuvac.release();
}
public void buy_vaccine() throws InterruptedException {
kupuvac.acquire();
fabrika.acquire();
while(vaccines.size() == 0) {
fabrika.release();
Thread.sleep(50);
fabrika.acquire();
}
System.out.println("kupena: " + vaccines.remove(0));
proizveduvac.release();
}
}