Wielowątkowość przy pracy z produktami

0

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).

1

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.

0

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.

1
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:)

0

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 :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1