1 / 16

Fejlett Programozási Technológiák II.

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

jeff
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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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

  15. 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

  16. Köszönöm a figyelmet! Fejlett Programozási Technológiák II. gyakorlat - Világos Zsolt

More Related