Имеет ли смысл добавить аннотацию @Synchronized
методам объекта, чтобы сделать их атомарными или не нужно?Являются ли методы объекта Kotlin/Singleton синхронизированными?
Например:
object Singleton {
var field1: Int = 0
private set
var field2: Int = 0
private set
@Synchronized fun updateFields(f1: Int, f2: Int) {
field1 = f1
field2 = f2
}
}
Я хочу, чтобы убедиться, что все поля обновляются, когда я прочитал их от других объектов. Должен ли я хранить аннотацию @Synchronized
?
Спасибо @miensol. Но если мой пример (с аннотацией) прав, я оставлю его так, потому что ваш усложнит читаемость кода при наличии большого количества полей. – nitrico
@nitrico Это было всего лишь предложение. Обратите внимание, что 'val field1: Int get() = state.field1' является избыточным в моем примере, поэтому даже с большим количеством полей в вашем примере будет мало различий по размеру кода. – miensol
Но они должны быть в двух местах (сам синглтон и внутренний класс). В любом случае, я спросил, потому что я читал, что [синглтоны являются потокобезопасными в Котлине] (http://stackoverflow.com/questions/30179793/are-kotlins-singletons-thread-safe), но не знал, означает то, что я пытаюсь достичь. – nitrico