boolean () { List<TaskFuture<?>> delegates; synchronized (this) { delegates = myDelegates; if (delegates == null) { return false; } } for (TaskFuture<?> delegate : delegates) { if (!delegate.isDone()) { return false; } } return true; }