Algorytm śpiącego fryzjera/golibrody

0

Nurtuje mnie ten algorytm, więc...

Należy stworzyć jeden wątek dla fryzjera oraz kilka wątków dla klientów. Współdzielone zasoby to n krzeseł i jedno krzesło fryzjera (np. n=5).

Czym byłoby się tutaj najlepiej posłużyć zarządzając wątkami, a czym najprościej w środowisku Java?

pzdr

0

w rzeczywistości potrzebujesz jeszcze jeden wątek do kontroli i ogarniania całości. To właśnie on zarządza tworzeniem wątków klientów i konfiguruje wstępnie aplikację. W javie można jeszcze wykorzystać mechanizm grup wątków.

0

A możesz mi bardziej szczegołowo rozwinąć twoje myśli? Coś na zasadzie opisu i wskazówek... Ktore watki maja dzialac wspolbieznie i jak nimi zarządzać?

pzdr

0

To tak. Masz wątek główny do zarządzania programem. W nim tworzysz wątki fryzjera i klientów. Najpierw tworzysz wątek fryzjera i go momentalnie usypiasz ponieważ kolejka jest pusta. Następnie tworzone są wątki klientów. Każdy nowy klient sprawdza czy globalna kolejka jest pusta jak tak to dodaje się do niej, jak nie to kończy działanie. Fryzjer pobiera pierwszy wątek z kolejki i powiadamia go o tym po czym klient kończy działanie, a fryzjer "obsługuje" klienta śpiąc przez pewien czas - tu koniecznie synchronized bo trzeba zablokować zasoby. I tyle wszystkie wątki działają w tym samym czasie i poza przypadkiem powiadomień i symulacji obsługi nie powinno się nic synchronizować.

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