Помогите с семафорами
Нужно сделать так, чтобы покупатель уменьшал переменную product, когда склад полностью заполнен, максимум - 3, после чего давал разрешение другому потоку на заполнение склада, но почему-то не происходит метод realease()
package org.example.univer.Pr21;
import java.util.concurrent.Semaphore;
class Store {
Semaphore sem;
private int product = 0;
Store(Semaphore sem){
this.sem = sem;
}
public synchronized void get() {
while (product < 1) {
if(product != 0){
try{
sem.acquire();
} catch (InterruptedException e){
e.printStackTrace();
}
}
if(product == 0){
sem.release();
}
}
product--;
System.out.println("Покупець купив 1 товар");
System.out.println("Товарів на складі:" + product);
}
public synchronized void put() {
Producer producer;
int i;
for(i = 0; i < 5; ++i){
while (product >= 3) {
if(product != 3) {
try {
sem.acquire();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if(product == 3){
sem.release();
}
}
product++;
System.out.println( "Виробник додав 1 товар");
System.out.println( "Товарів на складі:" + product);
}
}
}
класс с алгоритмом