Il problema risiede proprio nel fatto che hai un carico computazionale molto alto. Osserva cosa fai nella classe Lotto.java:
codice:
public void generaTutto(int ripetizioni) {
for (int a=0;a<ripetizioni;a++)
libera.generaEstrazione();
}
Per ciascuna iterazione richiami 6 metodi (all'interno della classe Ruota / RuotaFinta) i quali eseguono, ciascuno, una serie di cicli for (da un minimo di 5 iterazioni ad un massimo di 90, da quel che ho letto).
Ora, se ripetizioni è impostato al valore iniziale di 10000000, prova a pensare a quante operazioni richiedi di eseguire...
Questa parte, che è la più onerosa, la devi spostare all'interno di un Thread, ridefinendo il metodo run() e richiamandola utilizzando il metodo start().
PS: questa dichiarazione è molto divertente 
codice:
public class Ruota extends Object {
Ciao.