Найти в Дзене
DEBAGanov

Java 1007. Что является монитором при вызове нестатического и статического метода?

В Java каждый объект имеет свой монитор, который может быть использован для синхронизации доступа к объекту из разных потоков. При вызове нестатического метода монитором будет сам объект, для которого этот метод вызван, а при вызове статического метода монитором будет класс, в котором определен этот метод. Таким образом, при вызове нестатического метода монитором будет экземпляр класса, а при вызове статического метода - класс. Для синхронизации доступа к методу можно использовать ключевое слово synchronized в объявлении метода или блоке кода. Пример:

public synchronized void doSomething() {
// код метода, который нужно синхронизировать }

Также можно использовать объект монитора явно, если нужна более гибкая синхронизация. Для этого нужно получить монитор объекта с помощью ключевого слова synchronized, например:

Object monitor = obj;
synchronized (monitor) {
// блок кода, который нужно синхронизировать }

Здесь obj - это объект, монитор которого будет использован для синхронизации.

1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions

Tелеграмм канал: https://t.me/DEBAGanov

Мое резюме: https://github.com/DEBAGanov