Найти в Дзене
82 подписчика

💻 Статические методы и синхронизация в Котлин


На собеседовании может всплыть вопрос в духе: "Что будет являться монитором для блока кода, помеченного сразу двумя аннотациями @Synchronized и @JvmStatic в Котлин?".
Держите полезную статью, в которой рассматривается, для чего используются данные аннотации и каким будет результат при их одновременном использовании.

А пока немного о @Synchronized и @JvmStatic:

🟡Аннотация @Synchronized в Kotlin является аннотацией для методов и блоков кода, которая обеспечивает синхронизацию доступа к ним между потоками. Когда метод или блок кода помечены аннотацией @Synchronized, только один поток может получить право их выполнения в определенный момент времени, остальные потоки будут ожидать освобождения монитора, прежде чем получить доступ. Это позволяет избежать состояния гонки и обеспечить правильное выполнение кода в многопоточной среде.

🟡Аннотация @JvmStatic в Kotlin указывает компилятору, что функция или свойство должны быть статическими в Java-коде после компиляции. Когда мы используем @JvmStatic перед функцией или свойством в объекте- компаньоне или внутри объекта, компилятор Kotlin создает соответствующий статический элемент в Java-коде. Это позволяет вызывать этот элемент напрямую из Java-кода, без необходимости ссылаться на экземпляр класса или объекта.


1 минута