Sobes.tech
Junior — Middle

Какви методи могат да осигурят безопасен достъп до един обект или негово поле от няколко нишки едновременно?

sobes.tech AI

Отговор от AI

За да осигурите безопасен достъп до обект или негово поле от няколко нишки в Java, се използват различни методи за синхронизация:

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

  • Класове от пакета java.util.concurrent, например ReentrantLock — по-гъвкав механизъм за заключване.

  • Volatile полета — гарантират видимостта на промените в променливата между нишките, но не осигуряват атомарност на сложни операции.

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

  • Непроменяеми обекти — ако обектът е неизменяем, той е безопасен за достъп от няколко нишки без синхронизация.

Пример с synchronized:

public class Counter {
    private int count = 0;

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

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

Този подход гарантира, че операциите върху count ще бъдат атомарни и безопасни за нишки.