Назад к вопросам
Senior
6
Какие методы и механизмы синхронизации потоков в Java вы знаете?
Компании, где спрашивали
Napoleon IT
Ответ от нейросети
sobes.tech AI
В Java для синхронизации потоков используются следующие основные методы и механизмы:
- Ключевое слово
synchronized— блокировка методов или блоков кода для обеспечения взаимного исключения. - Объектные методы
wait(),notify(),notifyAll()— для организации взаимодействия между потоками через монитор. - Классы из пакета
java.util.concurrent:ReentrantLock— более гибкая блокировка с возможностью попытки захвата и таймаутов.Semaphore— для ограничения количества потоков, одновременно выполняющих определённый участок кода.CountDownLatch,CyclicBarrier— для координации запуска или завершения потоков.ConcurrentHashMap,BlockingQueue— потокобезопасные коллекции.
- Атомарные классы из
java.util.concurrent.atomic— для операций без блокировок, например,AtomicInteger.
Пример использования synchronized:
public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
return count;
}
}
Такой подход гарантирует, что изменения переменной count будут атомарными и видимыми для всех потоков.