In the spec.  the protection from concurrent accesses to channels uses an AtomicBoolean that can be implemented by a mutex lock. But other more efficient implementations exist so the AtomicBoolean abstract datatype must be used.