Sobes.tech
Назад к вопросам
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;
    }
}

Этот код гарантирует, что операции инкремента и чтения счетчика будут потокобезопасными.