2014-12-04 3 views
0

В моем приложении у меня есть класс, который имеет переменную, которая обновляется каждый раз, когда новое событие приходит в:Эксклюзивный доступ к методу/поле

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.

+0

вы имеете в виду mLogger.log(); вызовет onEvent (событие e)? – javaHunter

+0

no, both, метод 'onEvent'' Logger' и метод 'onEvent'' Trigger' полностью не связаны. Они вызываются из eventbus. – Moonlit

+0

https://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html – vels4j

ответ

0

сделать оба метода synchronized затем вызвать блокировку() блокирует доступ к OnEvent()

Смежные вопросы