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();
// Жұмыс жалғасады
Екі әдіс те бірнеше ағынның аяқталуын күтуді ұйымдастыруға мүмкіндік береді.