Поэтому я пытаюсь понять, как Kotlin обрабатывает синхронизацию свойств. Если у меня есть этот класс:
class Foo { var a = 0 var b = 0 }
и я хочу убедиться, что a & b синхронизирован весь доступ. Как мне это сделать? Я попытался использовать аннотацию:
class Foo { @Synchronized var a = 0 @Synchronized var b = 0 }
но Kotlin дает мне ошибку компилятора:
This annotation is not applicable to target 'member property with backing field'
Я просто пытаюсь получить лучшую ручку безопасности потоков в Котлине. Это то, что я всегда был OCD на Java, и я пытаюсь понять, как правильно его обрабатывать в Котлине.
Вы не можете синхронизировать свойство, но можете синхронизировать его с методами доступа. Используйте следующий синтаксис:
class Foo { var a = 0 @Synchronized get @Synchronized set //or @get:Synchronized @set:Synchronized var b = 0 }