Довідники 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());
    }
}
Коментарі
Додати коментар

Поки що коментарів немає