Limitar o numero de chamadas de uma funcao

Ola pessoal eu estou desenvolvendo uma aplicação parecida com o Spotfy, que quando voce é um usuario Free vc tem direito de passar a musica somente tres vezes, então eu fiz uma funcao para isso seria a seguinte:

  void proxima_free() {
        Random r = new Random();
        int faixa = r.nextInt(10);
        System.out.println("Faixa atual " + faixa);

    }

Entao a funcao vai produzir valores randomicos, eu quero que o usuario possa chamar ela somente tres vezes, e se ele tentar chamar de novo, apresentar uma mensagem que diga que ele nao tem direito de passar para outra musica. Eu quero que a funcao proxima_free() seja acionada quando o usuario escolher a opcao proxima do menu, o menu é um switch() segue abaixo:

switch (escolha) {
                case 1:
                    play_free();
                    break;

                case 2:
                    proxima_free();
                    break;

            }
        }

eu ja tentei utilizar while ou for dentro da funcao proxima_free() ou tentei usar no case, porem nao deram certas as tentativas, pq ele me apresenta as tres chamadas de uma vez só, sendo que o ideal seria eu passar uma “musica” de cada vez, se alguem puder me ajudar, agradeço desde ja!

private int passadas_free = 3;

void proxima_free() {
    if (passadas_free == 0) {
        throw new IllegalStateException("Limite de passadas free atingido");
    }
    Random r = new Random();
    int faixa = r.nextInt(10);
    System.out.println("Faixa atual " + faixa);
    passadas_free--;
}