package xapi.process.api; import xapi.except.NotYetImplemented; import xapi.util.api.RemovalHandler; import xapi.util.api.SuccessHandler; public interface AsyncLock { /** * always throws {@link NotYetImplemented}. */ AsyncCondition newCondition(); /** * In a single-threaded environment, tryLock always returns true. * * In a threadsafe environment, only returns true if the current thread * owns the lock. * */ boolean tryLock(); RemovalHandler lock(SuccessHandler<AsyncLock> onLocked); /** * In a single-threaded environment, this will call any queued async lock * requests. */ void unlock(); }