/** Works like {@link #getProperty(Object)} but wait until some value is set by someone. */ public Object waitForProperty(Object key) throws InterruptedException { synchronized (properties) { while (true) { Object v = properties.get(key); if (v != null) return v; properties.wait(); } } }