logo

Többszálú Java nyelven

  1. Többszálú
  2. Többfeladatos
  3. Folyamat alapú multitasking
  4. Szál alapú multitasking
  5. Mi az a Thread

Többszálú bemenet Jáva több szál egyidejű végrehajtásának folyamata.

A szál egy könnyű részfolyamat, a feldolgozás legkisebb egysége. A multiprocessing és a multithreading mindkettőt a többfeladatos munkavégzéshez használják.

nyisson meg egy fájlt java-val

Azonban többszálas feldolgozást használunk, mint több feldolgozást, mivel a szálak megosztott memóriaterületet használnak. Nem foglalnak le külön memóriaterületet, így memóriát takarítanak meg, és a szálak közötti kontextusváltás kevesebb időt vesz igénybe, mint a folyamat.

A Java Multithreading leginkább játékokban, animációkban stb.


A Java Multithreading előnyei

1) Azt nem blokkolja a felhasználót mert a szálak függetlenek, és egyszerre több műveletet is végrehajthat.

2) Te sok műveletet együtt tud végrehajtani, így időt takarít meg .

3) A szálak vannak független , tehát nincs hatással a többi szálra, ha egyetlen szálban kivétel történik.


Többfeladatos

A multitasking több feladat egyidejű végrehajtásának folyamata. Multitaskingot használunk a CPU használatához. A multitasking kétféleképpen valósítható meg:

  • Folyamat alapú többfeladatos munkavégzés (multiprocessing)
  • Szál alapú többfeladatos (többszálú)

1) Folyamat alapú többfeladatos (multiprocessing)

  • Minden folyamatnak van egy címe a memóriában. Más szavakkal, minden folyamat külön memóriaterületet foglal le.
  • Egy folyamat nehézkes.
  • A folyamatok közötti kommunikáció költsége magas.
  • Az egyik folyamatról a másikra való váltás némi időt igényel a mentéshez és a betöltéshez regisztereket , memóriatérképek, listák frissítése stb.

2) Szál alapú többfeladatos (többszálas)

  • A szálak ugyanazt a címteret használják.
  • A szál könnyű.
  • A szálak közötti kommunikáció költsége alacsony.

Megjegyzés: Minden szálhoz legalább egy folyamat szükséges.

Mi a Thread a java-ban

A szál egy könnyű részfolyamat, a feldolgozás legkisebb egysége. Ez egy külön végrehajtási út.

A szálak függetlenek. Ha az egyik szálban kivétel történik, az nincs hatással a többi szálra. Megosztott memóriaterületet használ.

Java Multithreading

Amint a fenti ábrán látható, a folyamaton belül egy szál kerül végrehajtásra. A szálak között kontextusváltás van. Az operációs rendszeren belül több folyamat is lehet, és egy folyamatnak több szála is lehet.

Megjegyzés: Egyszerre csak egy szál kerül végrehajtásra.

Java szál osztály

Java biztosítja Szál osztály szálprogramozás eléréséhez. A szál osztály biztosítja kivitelezők és módszerek a szálon műveletek létrehozására és végrehajtására. A szálosztály meghosszabbodik Objektum osztály és futtatható felületet valósít meg.

Java szál módszerek

S.N. Módosító és típus Módszer Leírás
1) üres Rajt() A szál végrehajtásának elindítására szolgál.
2) üres fuss() Egy szál műveletének végrehajtására szolgál.
3) statikus űr alvás() A megadott ideig alszik egy szálat.
4) statikus szál currentThread() Hivatkozást ad vissza az éppen futó szál objektumra.
5) üres csatlakozik() Arra vár, hogy egy szál elhaljon.
6) int getPriority() Visszaadja a szál prioritását.
7) üres setPriority() Megváltoztatja a szál prioritását.
8) Húr getName() Visszaadja a szál nevét.
9) üres setName() Megváltoztatja a szál nevét.
10) hosszú getId() Visszaadja a szál azonosítóját.
tizenegy) logikai érték életben van() Azt teszteli, hogy a szál él-e.
12) statikus űr hozam() Ez azt eredményezi, hogy az éppen futó szálobjektum szünetel, és lehetővé teszi más szálak ideiglenes végrehajtását.
13) üres felfüggeszt() A szál felfüggesztésére szolgál.
14) üres önéletrajz() A felfüggesztett szál folytatására szolgál.
tizenöt) üres állj meg() A szál leállítására szolgál.
16) üres elpusztítani() A szálcsoport és annak összes alcsoportjának megsemmisítésére szolgál.
17) logikai érték isDaemon() Azt teszteli, hogy a szál démonszál-e.
18) üres setDaemon() A szálat démonként vagy felhasználói szálként jelöli meg.
19) üres interrupt() Megszakítja a fonalat.
húsz) logikai érték megszakad() Megvizsgálja, hogy a szál megszakadt-e.
huszonegy) statikus logikai érték megszakított() Megvizsgálja, hogy az aktuális szál megszakadt-e.
22) statikus int activeCount() Visszaadja az aktív szálak számát az aktuális szál szálcsoportjában.
23) üres checkAccess() Meghatározza, hogy az éppen futó szálnak van-e engedélye a szál módosítására.
24) statikus logikai érték holdLock() Akkor és csak akkor ad vissza igazat, ha az aktuális szál tartja a monitorzárat a megadott objektumon.
25) statikus űr dumpStack() Az aktuális szál veremnyomának kinyomtatására szolgál a szabványos hibafolyamhoz.
26) StackTraceElement[] getStackTrace() A szál veremkiíratását reprezentáló verem nyomelemek tömbjét adja vissza.
27) statikus int felsorol() Ez arra szolgál, hogy minden aktív szál szálcsoportját és alcsoportját a megadott tömbbe másolja.
28) Menet.Állam getState() A szál állapotának visszaadására szolgál.
29) ThreadGroup getThreadGroup() A szálcsoport visszaadására szolgál, amelyhez ez a szál tartozik
30) Húr toString() A szál karakterlánc reprezentációjának visszaadására szolgál, beleértve a szál nevét, prioritását és szálcsoportját.
31) üres értesít() Csak egy szál értesítésére szolgál, amely egy adott objektumra vár.
32) üres értesíti mindet() Arra használják, hogy értesítést küldjenek egy adott objektum összes várakozó szálának.
33) üres setContextClassLoader() Beállítja a kontextus ClassLoader-t a szálhoz.
3. 4) ClassLoader getContextClassLoader() Visszaadja a kontextus ClassLoader-t a szálhoz.
35) statikus szál.UncaughtExceptionHandler getDefaultUncaughtExceptionHandler() Visszaadja az alapértelmezett kezelőt, amelyet akkor hív meg, ha egy szál egy nem elkapott kivétel miatt hirtelen leáll.
36) statikus űr setDefaultUncaughtExceptionHandler() Beállítja az alapértelmezett kezelőt, amelyet akkor hív meg, ha egy szál hirtelen leáll egy nem elkapott kivétel miatt.
Tudod
  • Hogyan lehet két feladatot két szálon keresztül végrehajtani?
  • Hogyan hajtsunk végre többszálas műveletet anonim osztályon keresztül?
  • Mi az a szálütemező, és mi a különbség a megelőző ütemezés és az időszeletelés között?
  • Mi történik, ha kétszer indítunk egy szálat?
  • Mi történik, ha a start() metódus helyett a run() metódust hívjuk meg?
  • Mi a csatlakozási módszer célja?
  • Miért fejezi be a JVM a démonszálat, ha nem maradt felhasználói szál?
  • Mi az a leállító horog?
  • Mi az a szemétszállítás?
  • Mi a célja a finalize() metódusnak?
  • Mit jelent a gc() metódus?
  • Mi a szinkronizálás, és miért használjuk a szinkronizálást?
  • Mi a különbség a szinkronizált metódus és a szinkronizált blokk között?
  • Mi a két módja a statikus szinkronizálásnak?
  • Mi az a patthelyzet, és mikor fordulhat elő?
  • Mi az a szálak közötti kommunikáció vagy együttműködés?
Mit fogunk tanulni a Multithreadingben
  • Többszálú
  • Egy szál életciklusa
  • Szál létrehozásának két módja
  • Több feladat végrehajtása több szálon keresztül
  • Szál ütemező
  • Egy szálat alszik
  • Elindíthatunk egy szálat kétszer?
  • Mi történik, ha a start() metódus helyett a run() metódust hívjuk meg?
  • Csatlakozás egy szálhoz
  • Egy szál elnevezése
  • Egy szál prioritása
  • Daemon Thread
  • ShutdownHook
  • Szemétgyüjtés
  • Szinkronizálás szinkronizált módszerrel
  • Szinkronizált blokk
  • Statikus szinkronizálás
  • Holtpont
  • Szálak közötti kommunikáció