Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Dobra, to lecimy.
- W AppSMO powołujemy obydwa SMO:
- - jedno SMO, które jest SMO ograniczonym
- - drugie SMO, nieskończone
- Kazde SMO jest wyposażone w gniazda: SMO ma 2 gniazda, a SMOnieskonczone ma 1 gniazdo.
- SMO.java:
- w tym smo jest obsluga kolejki priorytetowej.
- tutaj tez są metody, które sprawdzają, czy któreś z gniazd (a są ich 2) jest aktualnie wolne.
- - tutaj obslugujemy kolejke, czyli dodajemy zgloszenia do kolejki, usuwamy itd
- SMO_nieskonczone.java:
- dziala na takiej samej zasadzie jak SMO, tylko ze tutaj mamy jedno gniazdo i tutaj znajduje sie kolejka nieograniczona;
- W otoczeniu powoływane jest zdarzenie. W klasie Zglaszaj.java co losowy czas tworzone są nowe zgłoszenia. I TERAZ JAZDA:
- - Tworzone jest nowe zgłoszenie co losowy czas (klasa Zglaszaj)
- - Utworzone zgloszenie wybiera (losuje) do ktorej kolejki chce isc (czy do SMO czy do SMO_nieskonczone)
- - Jesli zgloszenie wybierze kolejke priorytetowa SMO, to sprawdzamy warunki - czy kolejka nie jest pelna, jesli nie: to dodajemy zgloszenie, jesli jest pelna - to zgloszenie przechodzi do drugiego SMO;
- - caly czas jestesmy w Zglaszaj.java -> tutaj dalej, po wybraniu kolejki sprawdzamy, czy w tej kolejce jakies gniazdo jest wolne. jesli jest : rozpoczynamy obsługę zgłoszenia.
- - obsługa zgłoszenia jest w klasie rozpocznij_obsluge:
- - rozpoczyna sie obsluga: kolejno
- 1) nastepuje zablokowanie wolnego gniazda, aby inne zgloszenia nie mialy do niego dostepu
- 2) zgloszenie jest pobierane i nastepuje przerwanie jego niecierpliwosci (ktora zostala wczesniej ustawiona w przeszlosci)
- 3) generuje sie czas, w jakim zgloszenie zostanie obsluzone
- 4) konczy sie obsluga zgloszenia o zadanym id w konkretnym gniezdzie -> gniazdo jest zwalnianie (dalej w klasie ZakonczObsluge)
- Musisz pamiętac, że gdy na poczatku co losowy czas tworzyło się zgłoszenie, to od razu razem z tym zgłoszeniem tworzony był początek i koniec niecierpliwienia.
- jesli skonczymy obsluge zgloszenia w gniezdzie to:
- - po przejsciu przez RozpocznijObsluge, nastepuje:
- 1) odblokowanie zajetego wczesniej przez zgloszenie gniazda
- 2) sprawdzenie, czy zgloszenie chce sie blakac badz tez nie - boolean
- 3) jesli chce sie blakac: przechodzimy do StartBlakania (na zasadzie niecierpliwienia ustawiamy delay)
- 4) jesli nie chce sie blakac: wychodzi calkowicie
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement