Пример простейшего многопоточного ограниченного буфера с использованием synchronized: import java.util.LinkedList;
import java.util.Queue;
public class BoundedBuffer<T> {
private int capacity;
private Queue<T> buffer;
public BoundedBuffer(int capacity) {
this.capacity = capacity;
this.buffer = new LinkedList<>();
}
public synchronized void put(T element) throws InterruptedException {
while (buffer.size() == capacity) {
wait();
}
buffer.offer(element);
notifyAll();
}
public synchronized T take() throws InterruptedException {
while (buffer.isEmpty()) {
wait();
}
T element = buffer.poll();
notifyAll();
return element;
}
} В этой реализации используются ключевое слово synchronized и методы wait() и notifyAll() для обеспечения синхронизации и взаимодействия между потоками. Метод put(T element) добавляет элемент в буфер. Если буфер заполнен,