I guess it makes sense to signalAll waiters since we are purging the collection, it's only in the case where we have more threads than capacity that it is wasteful, which should be rare.