@Override public synchronized void vote(BooleanVote vote){
  if (decision)   return;
  if (vote.getVote()) {
    total++;
    latch.countDown();
    if (total >= votesNeeded) {
      decision=true;
    }
  }
}

@ Override public synchronized void vote ( BooleanVote vote ) { if ( decision ) return ; if ( vote . getVote ( ) ) { total ++ ; latch . countDown ( ) ; if ( total >= votesNeeded ) { decision = true ; } } }
live nodes | remaining nodes | majority | votes needed 1 | 0 | 0 | 0 2 | 1 | 1 | 1 n | r = n - 1 | n / 2 + 1 | n / 2 + 1 rounded 3 | 2 | 2 . 5 | 2 4 | 3 | 3 | 3 5 | 4 | 3 . 5 | 3 6 | 5 | 4 | 4
