"Helló, Amigo! Látom, nagyot haladsz a szálak megismerésében."
– Végül is nem volt olyan nehéz.
Nagyszerű! Ma könnyű leckéd van, a téma pedig a csatlakozási módszer.
Képzelje el a következő helyzetet: a főszál egy gyermekszálat hozott létre valamilyen feladat végrehajtásához. Az idő telik, és most a főszálnak szüksége van a gyermekszál által végzett munka eredményeire. De a gyermekszál még nem fejezte be a munkáját. Mit kell tennie a főszálnak?
Jó kérdés. Mit kell tennie a főszálnak?
"Erre való az összekapcsolási módszer. Lehetővé teszi, hogy az egyik szál várakozzon, amíg egy másik szál befejezi a munkáját:"
Kód | Leírás |
---|---|
|
A Runnable felületet megvalósító osztály. |
|
A főszál egy gyermekszálat hoz létre – thread1 .
Ezután elindítja a thread1 .start(); Aztán megvárja a befejezést – thread1.join(); |
Egy szál meghívhatja a csatlakozási metódust egy második szál Thread objektumán. Ennek eredményeként az első szál (amely a metódusnak nevezte) leállítja a munkáját, amíg a második szál (amelynek az objektum összekapcsolási metódusát hívták) be nem fejeződik.
Itt két dolgot kell megkülönböztetnünk: van egy szálunk (külön végrehajtási környezetünk) és egy Thread objektumunk.
"Ez az?"
"Igen."
"De miért kell létrehoznunk egy szálat, és azonnal várnunk kell, hogy befejeződjön?"
"Lehet, hogy nem kell azonnal. Lehet, hogy egy idő elteltével. Az első gyermekszál elindítása után a főszál sokkal több feladatot tud hozzárendelni más szálakhoz (létrehozva őket, és meghívja a start metódust). Majd amikor nincs hátra, fel kell dolgoznia az első gyermekszál eredményeit. Amikor meg kell várnia, amíg egy másik szál befejezi a működését, meg kell hívnia a csatlakozási metódust."
"Megvan."
GO TO FULL VERSION