В моем приложении у меня есть класс, который имеет переменную, которая обновляется каждый раз, когда новое событие приходит в:Эксклюзивный доступ к методу/поле
class Logger{
private String mVariable ="";
public void onEvent(Event e) {
//update mVariable here
}
public void log() {
//write mVariable to file
}
}
Теперь у меня есть еще один класс, который хочет, чтобы вызвать класс Logger для записи текущего значения в файл.
class Trigger{
//this is another event, not the event for which Logger is waiting for
public void onEvent(Event e) {
mLogger.log();
}
}
Как я могу гарантировать, что Trigger
класс имеет монопольный доступ к значению mVariable
всякий раз, когда он хочет? т. е. когда класс Trigger
вызывает метод log
, значение mVariable
не должно быть переопределено классом Logger
.
вы имеете в виду mLogger.log(); вызовет onEvent (событие e)? – javaHunter
no, both, метод 'onEvent'' Logger' и метод 'onEvent'' Trigger' полностью не связаны. Они вызываются из eventbus. – Moonlit
https://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html – vels4j