Se pregunta si hay barcos esperando al principio de iniciarCruce(). No tiene sentido volver a preguntar dentro de la misma función dado que el valor no pudo haber cambiado por definición del monitor.
Como siempre no se le puede dar prioridad a un proceso si el sistema no conoce su existencia. Se precisa que el barco ejecute iniciarCruceBarco() para saber que está esperando y poder darle prioridad.
Saludos