"Hej, Amigo! Jeg kan se, du gør store fremskridt med at lære om tråde."

"Det var trods alt ikke så svært."

Det er fantastisk! I dag har du en nem lektion, og emnet er join- metoden.

Forestil dig følgende situation: hovedtråden har oprettet en undertråd for at udføre en opgave. Tiden går, og nu har hovedtråden brug for resultaterne af arbejdet udført af barnetråden. Men børnetråden er endnu ikke færdig med sit arbejde. Hvad skal hovedtråden gøre?

Godt spørgsmål. Hvad skal hovedtråden gøre?

"Dette er, hvad join- metoden er til. Det giver os mulighed for at få en tråd til at vente, mens en anden tråd afslutter sit arbejde:"

Kode Beskrivelse
class Printer implements Runnable
{
private String name;
public Printer(String name)
{
this.name = name;
}
public void run()
{
System.out.println("I’m " + this.name);
}
}
Klasse, der implementerer Runnable-grænsefladen.
public static void main(String[] args)
{
Printer printer1 = new Printer("Nick");
Thread thread1 = new Thread(printer1);
thread1.start();

thread1.join();
}
Hovedtråden skaber en undertråd – tråd1 .

Derefter starter den ved at kalde tråd1 .start();

Og så venter den på, at den er færdig – thread1.join();

Én tråd kan kalde joinmetoden på en anden tråds trådobjekt. Som et resultat stopper den første tråd (som kaldes metoden) sit arbejde, indtil den anden tråd (hvis objektets joinmetode blev kaldt) er færdig.

Vi skal skelne mellem to ting her: Vi har en tråd (et separat udførelsesmiljø), og vi har et Thread-objekt.

"Det er det?"

"Ja."

"Men hvorfor skal vi oprette en tråd og så straks vente på, at den er færdig?"

"Det er måske ikke nødvendigt med det samme. Det kan være, når der er gået noget tid. Efter at have startet sin første underordnede tråd, kan hovedtråden tildele mange flere opgaver til andre tråde (ved at oprette dem og kalde startmetoden ) . Så når den ikke har noget arbejde tilbage, skal den behandle resultaterne af den første underordnede tråd. Når du skal vente på, at en anden tråd er færdig med at arbejde, skal du kalde joinmetoden . "

"Forstået."