Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

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

Hasonló előadás


Az előadások a következő témára: "Fejlett Programozási Technológiák II. Világos Zsolt 12. gyakorlat."— Előadás másolata:

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

2 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt2 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

3 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt3 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: JVM Thread.{Max | Min | Norm}Priority  Windowsban azt hiszem 7 van

4 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt4 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

5 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt5 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

6 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt6 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

7 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt7 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

8 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt8 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

9 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt9 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()

10 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt10 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

11 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt11 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

12 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt12 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)

13 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt13 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

14 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt14 Synchronized Kölcsönös kizárás része  két helyen lehet függvény előtt public synchronized void doit() {…} függvényben, blokk előtt synchronized (Object o) {…} pl.: synchronized (this) {…}  hatása: a megjelölt kódrészletet egyszerre csak egy szál hajthatja végre

15 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt15 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

16 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt16 Köszönöm a figyelmet!


Letölteni ppt "Fejlett Programozási Technológiák II. Világos Zsolt 12. gyakorlat."

Hasonló előadás


Google Hirdetések