Współbieżność w Javie

III rok Informatyka


Laboratorium 2

  1. Ćwiczenie - test sposobu szeregowania wątków przez JVM
    • Do ćwiczenia potrzebny będzie plik Race2.java
    • Przetestuj program pod róznymi systemami operacyjnymi (np. Solaris i Linux). Jaki jest efekt i jakie można z niego wyciągnąc wnioski?

  2. Monitory w javie
    • Związane z każdym obiektem
    • Same nie są reprezentowane jako klasy / obiekty!
    • Synchronizują dostęp do metod i bloków synchronized
    • Dodatkowy monitor związany z klasą - dla metod statycznych synchronizowanych

  3. Synchronizacja
    • Metody synchronized
    • Blok synchronized
      • użyteczny do synchronizacji dostępu do już istniejących obiektów, do których nie można dodać żadnych metod
      synchronized ( obj ) {
          ...
        obj.method();
          ...
      }
      
    • Zasady synchronizacji
      • Wejście do metody synchronizowanej (bloku synchronizowanego) powoduje zajęcie monitora (którego?), opuszczenie jej - zwolnienie monitora
      • Metoda synchronizowana (blok synchronizowany) może być wykonywana na rzecz danego obiektu tylko przez wątek będący w posiadaniu monitora tego obiektu
      • Tylko jeden wątek może być w posiadaniu monitora danego obiektu, a po jego zajęciu tylko on sam może go zwolnić

  4. Metody wait, notify / notifyAll
    • Zdefiniowane w klasie Object
    • Koordynacja działania wielu wątków
    • wait
      • może być wywołana tylko przez wątek będący w posiadaniu monitora
      • powoduje uśpienie wątku w kolejce związanej z monitorem (którym?)
      • zwalnia monitor
      • wątek może być obudzony tylko gdy inny wątek wywoła notify (jaki to musi być wątek?)
    • notify
      • budzi jeden wątek spośród oczekujących w kolejce 'wait' (której kolejce?)
      • obudzony wątek oczekuje aż wątek wywołujący notify zwolni monitor
      • notifyAll działa jak notify, ale budzi wszystkie wątki

  5. Ćwiczenie - semafory
    • Celem ćwiczenia jest zaimplementowanie klasy reprezentującej semafor binarny - 'Semaphore', a następnie użycie tej klasy do realizacji wzajemnego wykluczania w przykładzie wyścig

balis at wszib.edu.pl