Sobes.tech
Junior — Middle
79

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

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

Для обеспечения безопасного доступа к одному объекту или его полю из нескольких потоков в Java используют различные методы синхронизации:

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

  • Классы из пакета java.util.concurrent, например, ReentrantLock — более гибкий механизм блокировок.

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

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

  • Immutable объекты — если объект неизменяемый, то он безопасен для доступа из нескольких потоков без синхронизации.

Пример с synchronized:

public class Counter {
    private int count = 0;

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

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

Такой подход гарантирует, что операции над count будут атомарными и потокобезопасными.