External Scheduling
External scheduling controls state changes to the monitor by scheduling calls to specified mutex members, which indirectly schedule tasks calling from outside the monitor.
External scheduling takes advantage of the entry queue to block tasks unconditionally when the monitor is active (i.e., block outside the monitor) and of the acceptor stack to block tasks conditionally that have entered the monitor (i.e., block inside the monitor).
Most of the scheduling that occurs and the programmer thinks about is the outside scheduling from the entry queue rather than the internal scheduling on the acceptor stack, which occurs implicitly as part of the accept statement semantics.
More on it: