Kaip veikia metodas Thread.join()?
sobes.tech AI
Atsakymas iš AI
Metodas Thread.join() verčia šiuo metu vykdomą srautą laukti, kol baigsis join iškviestas srautas.
Kviečiant otherThread.join(), dabartinis srautas (pavyzdžiui, main) yra užblokuotas, kol otherThread nebaigs savo vykdymo (jo run() metodas grąžins valdymą).
Galite nurodyti laukimo laiką milisekundėmis arba milisekundėmis ir nanosekundėmis:
otherThread.join(long millis): laukia ne ilgiau kaipmillismilisekundžių.otherThread.join(long millis, int nanos): laukia ne ilgiau kaipmillismilisekundžių irnanosnanosekundžių.
Jei nurodytas laiko limitas pasibaigia ir srautas dar nebaigtas, dabartinis srautas atlaisvinamas ir tęsia vykdymą.
Thread.join() gali išmesti InterruptedException, jei dabartinis srautas yra nutrauktas laukimo metu. Tokiu atveju laukimas nutraukiamas.
Pavyzdys:
// Sukuriame ir paleidžiame naują srautą
Thread worker = new Thread(() -> {
try {
// Darbo imitacija
Thread.sleep(2000);
System.out.println("Darbinis srautas baigėsi.");
} catch (InterruptedException e) {
e.printStackTrace();
}
});
worker.start();
try {
// Pagrindinis srautas laukia, kol baigsis darbinis srautas
worker.join();
System.out.println("Pagrindinis srautas tęsiasi po darbinio pabaigos.");
} catch (InterruptedException e) {
e.printStackTrace();
}
Svarbu: join() sinchronizuoja vieno srauto vykdymą su kito užbaigimu. Tai naudinga, kai norite užtikrinti, kad tam tikras uždavinys bus baigtas prieš tęsiant darbą kitame sraute.