Ho provato anche un'altra sequenza, di un altro esercizio "ABAA" :

codice:
   public void passaA(){
         
          mutexA.P();
            System.out.println("Sezione critica "+Thread.currentThread().toString());
            sB.V();
            sA.P();
            
           mutexA.V(); 
      
   }

   public void passaB() {
           
           sB.P();
           System.out.println("Sezione critica "+Thread.currentThread().toString());
           sA.V();
           sA.V();
   }
Nel main ovviamente ho dato lo start a A1,A2,A3,B1.
Quello che succede nn lo capisco, perchè a volte va bene a buon fine, altre invece stampa
ABA l'ultimo Thread molte volte non viene stampato ( processato ), perchè secondo voi?