Wielowątkowość przy pracy z produktami

Wielowątkowość przy pracy z produktami
D5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 45
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).

SP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 127
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.

D5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 45
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.

dymul
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 182
1
Kopiuj
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.

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

D5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 45
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 :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.