Java 方法/字段的独占访问权限

Java 方法/字段的独占访问权限,java,Java,在我的应用程序中,我有一个类,该类有一个变量,该变量在每次出现新事件时都会更新: class Logger{ private String mVariable =""; public void onEvent(Event e) { //update mVariable here } public void log() { //write mVariable to file } } 现在,我有另一个类,它想触发Logger类将当前值写入文件 class

在我的应用程序中,我有一个类,该类有一个变量,该变量在每次出现新事件时都会更新:

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();
   }
}

我如何确保触发器类可以在需要时独占访问mvvariable的值?i、 e.当Trigger类调用log方法时,MVVariable的值当然不应被Logger类覆盖。

使两个方法同步,然后调用lock将锁定对OneEvent的访问

您的意思是mLogger.log;是否会触发onEvent e?否,记录器的onEvent方法和触发器的onEvent方法完全不相关。它们是从eventbus调用的。同步这些方法只是确保它们不会同时执行。我如何确保触发器类不必等待,但可以在需要时调用日志方法?那么,如果记录器处于写入中间,触发器需要在不等待的情况下访问,那么该如何精确地执行此操作?您不必使整个方法同步。仅对实际写入变量的相关位执行显式锁定。但是,如果一件事情已经被访问,那么就没有办法神奇地回滚它所做的一切,以便优先考虑其他事情。