Fejlett programoz si technol gi k ii
This presentation is the property of its rightful owner.
Sponsored Links
1 / 16

Fejlett Programozási Technológiák II. PowerPoint PPT Presentation


  • 54 Views
  • Uploaded on
  • Presentation posted in: General

Fejlett Programozási Technológiák II. 12. gyakorlat. Világos Zsolt. Mai gyakorlat. Threads – Szálak Process vs szál Szálkezelési módok Szál definiálása Szemafor és monitor Mutual Exclusion és programelemek. Process vs szál. Time slicing

Download Presentation

Fejlett Programozási Technológiák II.

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Fejlett programoz si technol gi k ii

Fejlett Programozási Technológiák II.

12. gyakorlat

Világos Zsolt


Mai gyakorlat

Mai gyakorlat

  • Threads – Szálak

    • Process vs szál

    • Szálkezelési módok

    • Szál definiálása

    • Szemafor és monitor

    • Mutual Exclusion és programelemek

Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt


Process vs sz l

Process vs szál

  • Time slicing

    • mulitask megvalósítása: időosztásos os-ek, vagy több processzor/mag/gép (PVM)

    • Processeknek és szálaknak is van prioritása

    • Java: 10 szint van, leképezés os-re: JVMThread.{Max | Min | Norm}Priority

    • Windowsban azt hiszem 7 van

Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt


Process vs sz l1

Process vs szál

  • Process

    • Minden processnek saját végrehajtási környezete van (pl saját memória terület)

      • 1 program = 1-* process

    • Process közti kommunikáció: IPC (Inter Process Communication)

      • Egy gépen vagy több gép között

    • Java: ProcessBuilder és Process osztályok

Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt


Process vs sz l2

Process vs szál

  • Thread

    • Saját végrehajtási környezete van

      • Indítása olcsóbb mint egy process indítása

      • Hajrá Occam!

    • 1 Process = 1-* szál

    • Előny: thread osztozik process erőforrásain

    • Hátrány: kommunikáció  kölcsönös kizárás

Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt


Sz lkezel si m dok

Szálkezelési módok

  • Két mód van rá

    • Direkt szál menedzsment

      • java.lang.Runnable és ~.Thread

    • Magasabb (absztraktabb API)

      • java.util.concurrent

      • (thread pool)

    • elsővel foglalkozunk

Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt


Sz l defini l sa

Szál definiálása

  • Szál definiálása

    • két mód:

      • Runnable interfész implementálása

      • Thread osztályból származtatás, mely osztály implementálja a fenti interfészt

    • előző preferáltabb az egyszeres öröklődés miatt

Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt


Mai gyakorlat1

Mai gyakorlat

  • Szemafor és monitor

    • A szemafor a párhuzamosság alapvető eszköze

    • alkalmas kölcsönös kizárásra és szinkronizálásra is

    • hátránya, hogy a kezelő kód szétszórt

  • Monitor: fogjuk össze a kódokat

Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt


Monitor

Monitor

  • Java-ban minden objektum viselkedhet monitorként.

  • Az Object ősosztály nyújtja ezt a szolgáltatást metódusok által

    • wait(), wait(long timeout)

    • notify(), notifyAll()

Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt


Monitor1

Monitor

  • Szerkezet:

    • valósítsuk meg a közös erőforrást egy osztályban

    • a rajta végzett műveletek legyenek metódusok, melyek kezelik a kommunikációs problémákat

    • a kritikus rész így központosítottam lesznek

Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt


Object

Object

  • Metódusok:

    • wait(), wait(long timeout)

      • az aktuális szál az objektum várakozási sorába kerül, amíg egy másik szál notify(All)-t nem hív

      • timeout: előző + max timeout ms-ig

    • notify(), notifyAll()

      • az első egy szálat kivesz a várakozási sorból

      • a második mindegyiket kiveszi a sorból

Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt


Thread

Thread

  • Metódusok:

    • sleep(long time)

      • az akt szál time ideig várakozik

    • join(Thread t)

      • aktuális szál vár, amíg t szál terminál

      • overload változatával timeout is megadható

    • start()/stop()

      • szál indítás és megállítás (utóbbi Deprecated)

Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt


Thread1

Thread

  • Metódusok:

    • interrupt()

      • megszakítja a szál futását

      • átállítja a belső interrupted flag-et

      • wait és … hívások ellenőrzik a flag-et, és ha megszakították a szálat, akkor hibát dobnak

      • InterruptedException

      • nincs konvenció, kezelése a programozó feladata

Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt


Synchronized

Synchronized

  • Kölcsönös kizárás része

    • két helyen lehet

      • függvény előttpublic synchronized void doit() {…}

      • függvényben, blokk előttsynchronized (Object o) {…}pl.: synchronized (this) {…}

    • hatása: a megjelölt kódrészletet egyszerre csak egy szál hajthatja végre

Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt


Synchronized m k d s

Synchronized működés

  • Statikus metódusok esetén az osztályt leíró Class objektumhoz rendelt monitort használja a kód

  • Példány metódus esetén az adott objektum kerül használatba

Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt


K sz n m a figyelmet

Köszönöm a figyelmet!

Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt


  • Login