hlThread.getMutex().wait();
dlHowLoud.getMutex().wait();
  public void downloadFinished(Track track, boolean succeeded)  {    Object[] objs = (Object[]) downloadHash.get(track);    if (objs != null) {      PipedOutputStream pos = (PipedOutputStream) objs[0];      HowLoudThread hlThread = (HowLoudThread) objs[1];      downloadHash.remove(track);      try {        pos.close();      }      catch (IOException e) {        System.err.println("auto-normalize: "+e.toString());      }      String loudness;      if (!succeeded) {        hlThread.killProcessing(track);        track.setProperty("loudness", null);        getApp().saveTrack(track, false);      }      else {          // Block until the loudness has been determined.        synchronized (hlThread.getMutex()) {          while ((loudness = track.getProperty("loudness")) == null) {            try {              hlThread.getMutex().wait();            }            catch (InterruptedException e) {            }          }        }      }    }  }