Справочники Java synchronized

Что такое synchronized в Java?

Ключевое слово synchronized используется для обеспечения синхронизации доступа к разделяемым ресурсам в многопоточных приложениях. Синхронизация помогает предотвратить конфликты и гарантировать корректное выполнение критических секций кода.

Основные моменты:

  1. Обеспечение атомарности:
    • synchronized применяется к методам или блокам кода и гарантирует, что только один поток может выполнять этот участок кода в любой момент времени.
  2. Ключевое слово this и synchronized методы:
    • Если метод объявлен с ключевым словом synchronized, то он считается синхронизированным и блокирует доступ к объекту, на котором вызывается метод.
  3. Синхронизация блоков кода:
    • Кроме синхронизации методов, можно использовать блоки кода с ключевым словом synchronized, чтобы ограничить доступ к части кода, не включая весь метод.
class Counter {
    private int count = 0;

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

    public void decrement() {
        synchronized (this) { count--; }
    }

    public int getCount() { return count; }
}

public class Main {
    public static void main(String[] args) throws InterruptedException {
        Counter counter = new Counter();

        Thread incThread = new Thread(() -> { for (int i = 0; i < 100000; i++) counter.increment(); });
        Thread decThread = new Thread(() -> { for (int i = 0; i < 100000; i++) counter.decrement(); });

        incThread.start(); decThread.start();
        incThread.join(); decThread.join();

        System.out.println("Final Count: " + counter.getCount());
    }
}
Комментарии
Добавить комментарий

Пока комментариев нет