Java: przykład konsumenta producenta — obsługa współbieżnego odczytu/zapisu

Opublikowany: 2019-02-17

Przykład konsumenta producenta — obsługa równoczesnego odczytu:zapisu

Problem producer-consumer problem (znany również jako bounded-buffer problem ) to klasyczny w Javie Przykład problemu z synchronizacją wieloprocesową.

Problem opisuje dwa procesy, the producer i the consumer , które dzielą wspólny bufor o stałym rozmiarze, używany jako kolejka. Zadaniem producenta jest wygenerowanie fragmentu danych, umieszczenie go w buforze i ponowne uruchomienie.

W tym samym czasie konsument zużywa dane (tj. usuwa je z bufora) po jednym kawałku na raz. Problem polega na upewnieniu się, że producent nie będzie próbował dodawać danych do bufora, jeśli jest on pełny, a konsument nie będzie próbował usunąć danych z pustego bufora.

Poniżej prosty program Java stworzy ten problem:

Przykłady Java – problem konsumenta producenta

Sprawa:

Rezolucja:

Dodaj słowo kluczowe synchronized , aby zablokować data , gdy ich używamy.

Lepszy program Java:

Przykładowy wynik dla konsumenta producenta Java:

java-producent-consumer-tutorial-crunchify