Помогите с семафорами

Нужно сделать так, чтобы покупатель уменьшал переменную 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);


    }
    }

}

класс с алгоритмом


Ответы (0 шт):