Sobes.tech
Junior — Middle
100

Wat zijn de verschillen tussen het gebruik van het sleutelwoord synchronized voor een methode en voor een codeblok binnen de methode?

Antwoord van AI

sobes.tech AI

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

Отличия между synchronized для метода и для блока внутри метода:

  • synchronized метод:

    • Синхронизирует весь метод.
    • Если метод нестатический, блокировка происходит на объекте (this).
    • Если метод статический, блокировка происходит на объекте класса (Class объект).
  • synchronized блок внутри метода:

    • Позволяет синхронизировать только часть метода.
    • Можно явно указать объект, на котором происходит блокировка, например, synchronized(this), synchronized(lockObject).
    • Более гибкий подход, позволяет уменьшить время удержания блокировки.

Пример:

public class Example {
    private final Object lock = new Object();

    public synchronized void syncMethod() {
        // весь метод синхронизирован на this
    }

    public void syncBlock() {
        // часть метода синхронизирована
        synchronized(lock) {
            // критическая секция
        }
    }
}

Использование блока synchronized внутри метода позволяет более точно контролировать область синхронизации и может повысить производительность за счёт уменьшения времени блокировки.