void () { synchronized (this) { while (myRequestFuture == null) { try { wait(); } catch (InterruptedException ignore) { } } } ourWorkerRequest.set(this); try { ConcurrencyUtil.runUnderThreadName("DebuggerManagerThread", () -> { myOwner.run(this); }); } finally { ourWorkerRequest.set(null); boolean b = Thread.interrupted(); // reset interrupted status to return into pool } }