Sobes.tech
Junior — Middle
108

Қалай ұйымдастыру керек синхрондауды, бір ағын екі басқа ағындардың аяқталуын күтетіндей?

AI-дан жауап

sobes.tech AI

Java-да, бір ағын басқа екі ағынның аяқталуын күтуді join() әдісін пайдалану арқылы жүзеге асыруға болады.

Мысал:

Thread t1 = new Thread(() -> {
    // бірінші ағынның коды
});
Thread t2 = new Thread(() -> {
    // екінші ағынның коды
});

t1.start();
t2.start();

// Негізгі ағын t1 және t2 аяқталуын күтеді
try {
    t1.join();
    t2.join();
} catch (InterruptedException e) {
    e.printStackTrace();
}

// Осыдан кейін жұмыс жалғаса береді, екі ағын да аяқталды деп сенімді бола отырып

Сонымен қатар, CountDownLatch сияқты жетілдірілген синхрондау құралдарын қолдануға болады, ол java.util.concurrent пакетінде орналасқан:

CountDownLatch latch = new CountDownLatch(2);

Thread t1 = new Thread(() -> {
    // жұмыс
    latch.countDown();
});
Thread t2 = new Thread(() -> {
    // жұмыс
    latch.countDown();
});

t1.start();
t2.start();

// Екі ағын да countDown() шақырғанша күтеді
latch.await();

// Жұмыс жалғасады

Екі әдіс те бірнеше ағынның аяқталуын күтуді ұйымдастыруға мүмкіндік береді.