Sobes.tech
Назад к вопросам
Junior — Middle
57

Какие имеются средства управления синхронизацией потоков или задач в параллельном программировании?

Компании, где спрашивали
ИннотехИннотех

Ответ от нейросети

sobes.tech AI

В Java для управления синхронизацией потоков и задач используются различные средства:

  • Ключевое слово synchronized — блокирует доступ к коду или объекту, чтобы только один поток мог выполнять этот участок кода одновременно.

  • Объекты Lock из java.util.concurrent.locks — более гибкая альтернатива synchronized, например, ReentrantLock позволяет явно захватывать и освобождать блокировки.

  • Классы из пакета java.util.concurrent:

    • Semaphore — ограничивает количество потоков, которые могут одновременно получить доступ к ресурсу.
    • CountDownLatch — позволяет одному или нескольким потокам ждать, пока другие потоки выполнят определённые действия.
    • CyclicBarrier — синхронизирует группы потоков, заставляя их ждать друг друга.
    • Exchanger — позволяет двум потокам обмениваться данными.
  • Volatile-переменные — обеспечивают видимость изменений переменных между потоками без блокировок.

  • Атомарные классы (AtomicInteger, AtomicReference и др.) — обеспечивают атомарные операции без использования блокировок.

Пример использования synchronized:

public class Counter {
    private int count = 0;

    public synchronized void increment() {
        count++;
    }

    public synchronized int getCount() {
        return count;
    }
}