I didn't realize it was in a busy wait loop, couldn't you use `ExecutorCompletionService.take()` instead of `poll()` in `unlockCompleted()`?