Kolejka i wątki. Prośba o pomoc...

0

Potrzebuje zrobić zadanko i nie bardzo wiem jak to ugryźć. Nie będę ukrywał że programowanie w Javie to moja pięta achillesowa.
Każda pomoc w tym temacie baaaardzo mile widziana

POZDRAWIAM serdecznie i z góry bardzo dziękuję.

A oto treść zadania:

W problemie występuje P+1 wątków: P producentów i 1 konsument, którzy dzielą wspólny zasób - bufor dla produkowanych (konsumowanych) jednostek.
Rolę bufora pełni kolejka (FIFO) mieszcząca N łańcuchów znaków (string), umożliwiająca wykonanie operacji enqueue i dequeue.

Producent działa następująco:

  • jeżeli bufor nie jest pełny, to co tp milisekund producent umieszcza w buforze losowy łańcuch znaków.
  • jeżeli bufor jest pełny, to producent powinien zostać uśpiony do momentu usunięcia wartości z bufora przez konsumenta.

Konsument działa następująco:

  • jeżeli bufor jest pusty, to konsument powinien zostać uśpiony do momentu umieszczenia wartości w buforze przez producenta.
  • jeżeli bufor nie jest pusty, to konsument usuwa wartość z bufora.

Praca wątków powinna zostać przerwana po upływie 1 sekundy, a wątek główny powinien sprawdzić, czy liczba wyprodukowanych jednostek = liczbie skonsumowanych + liczba jednostek w buforze.

Program powinien wczytać parametry P, N, tp ze standardowego wejścia.

0
jasiek77 napisał(a):

Potrzebuje zrobić zadanko i nie bardzo wiem jak to ugryźć. Nie będę ukrywał że programowanie w Javie to moja pięta achillesowa.

Napisz więc w języku, który lubisz, a my pomożemy przenieść do javy...
Zadanie jest banalnie proste, ale gotowca od nas nie dostaniesz, chyba, że przeniesiesz post do działu Praca, wtedy ktoś za 50zł to zrobi.
Lepiej jednak wyjdziesz jeśli sam zaczniesz myśleć. Stwórz klasę bazową, w której będziesz miał kolejkę fifo i synchroniczną metodę wstawiania danych do kolejki, oraz metodę usuwającą dane. Następnie stwórz klasy producent i konsument dziedziczące po klasie Thread i wystartuj kilka wątków producenta i jednego konsumenta. Jak to zrobisz to daj znać.

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