Witam, mam do stworzenia program, w którym ustalam liczbę producentów, liczbę konsumentów i pojemność bufora(max 5). Gdy producent stworzy jakiś obiekt będzie chciał go wsadzić do bufora. Jeśli będzie pełny ma czekać aż się zwolni. Konsumenci natomiast będą chcieli wziąć przedmioty z bufora, a jeśli jest pusty mają czekać. Poniżej kod w fragmentach z komentarzami(w pierwszym fragmencie raczej nie leży sedno problemu).
A nie możesz skorzystać z którejś z klas implementujących interfejs BlockingQueue?
https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html
na przykład klasa LinkedBlockingQueue pozwala ustawić maksymalny rozmiar, i ma metody których potrzebujesz.
Niestety, ale muszę korzystać z zakresu materiału, który był omawiany na zajęciach. Zmieniłem podział kodu, bo omyłkowo źle to zrobiłem. Problem dotyczy całej klasy bufor, a nie tylko jej fragmentu.
class Bufor extends ProducentKonsument
Zastanów się, czy wiesz co tutaj napisałeś bo moim zdaniem nie a jest to główne źródło twoich problemów.
String bufor = bufe.getSelectedItem().toString();
w tej linijce wcale nie sprawdzasz wartości ComboBoxa z obiektu klasy ProducentKonsument w okienku, które tworzy ten obiekt a raczej z nowego Okienka tworzonego przez utworzony obiekt Bufor. I wstawiaj z łaski swojej kompilowalny kod:)
U mnie się program kompiluje. Napisałem, że po prostu ciągle jest tak jakbym zadał buforowi wartość 0. Działam w Eclipse.
No ja to rozumiem tak, że klasa Bufor dziedziczy po klasie ProducentKonsument. Wykonałem dziedziczenie by móc w niej korzystać z bufe. Nie za bardzo rozumiem twojego drugiego komentarza. Jeśli dodam actionlistenera dla bufe i w nim dokonam tej operacji to będzie działać tak? Koniecznie potrzebuję mieć tę wartość pojemności bufora w klasie bufor i w takim wypadku nie mam pomysłu jak tego dokonać
Edit: Już sobie poradziłem, dziękuję za każdą pomoc :)