"Hallo, Amigo! Ik zie dat je grote vorderingen maakt met het leren over draden."
"Het was toch niet zo moeilijk."
Dat is geweldig! Vandaag heb je een gemakkelijke les, en het onderwerp is de join- methode.
Stel je de volgende situatie voor: de hoofdthread heeft een onderliggende thread gemaakt om een bepaalde taak uit te voeren. De tijd verstrijkt en nu heeft de hoofdthread de resultaten nodig van het werk dat door de onderliggende thread is uitgevoerd. Maar de kinderthread is nog niet klaar met zijn werk. Wat moet de rode draad doen?
Goede vraag. Wat moet de rode draad doen?
"Dit is waar de join- methode voor is. Het stelt ons in staat om één thread te laten wachten terwijl een andere thread zijn werk beëindigt:"
Code | Beschrijving |
---|---|
|
Klasse die de Runnable-interface implementeert. |
|
De hoofdthread creëert een onderliggende thread – thread1 .
Vervolgens start het door thread1 .start(); En dan wacht het tot het voltooid is – thread1.join(); |
Eén thread kan de join- methode aanroepen op het Thread-object van een tweede thread. Het resultaat is dat de eerste thread (die de methode heeft aangeroepen) stopt met werken totdat de tweede thread (waarvan de join-methode van het object is aangeroepen) klaar is.
We moeten hier onderscheid maken tussen twee dingen: we hebben een thread (een aparte uitvoeringsomgeving) en we hebben een Thread-object.
"Dat is het?"
"Ja."
"Maar waarom moeten we een thread maken en dan onmiddellijk wachten tot deze voltooid is?"
"Misschien hoeft het niet meteen te gebeuren. Het kan na enige tijd zijn. Na het starten van de eerste onderliggende thread kan de hoofdthread veel meer taken toewijzen aan andere threads (door ze te maken en de startmethode aan te roepen ). heeft geen werk meer, het moet de resultaten van de eerste onderliggende thread verwerken. Telkens wanneer u moet wachten tot een andere thread klaar is met werken, moet u de join- methode aanroepen. "
"Begrepen."
GO TO FULL VERSION