Назад к вопросам
Junior — Middle
70
Какие методы и инструменты используются в Java для реализации синхронизации потоков?
Компании, где спрашивали
Joy Dev
Ответ от нейросети
sobes.tech AI
В Java для синхронизации потоков используются несколько основных методов и инструментов:
-
Ключевое слово
synchronized— позволяет сделать блок кода или метод критической секцией, обеспечивая, что в один момент времени этот код выполнит только один поток. -
Объекты из пакета
java.util.concurrent:ReentrantLock— более гибкая альтернативаsynchronizedс возможностью попытки захвата блокировки, таймаутов и пр.Semaphore,CountDownLatch,CyclicBarrier— для более сложной координации потоков.
-
Классы для атомарных операций из
java.util.concurrent.atomic(например,AtomicInteger) — позволяют выполнять операции без блокировок. -
Volatile-переменные — гарантируют видимость изменений переменной между потоками, но не обеспечивают атомарность.
Пример использования synchronized:
public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
return count;
}
}
Этот код гарантирует, что операции инкремента и чтения счетчика будут потокобезопасными.