Ho risolto così dentro il main unendo i due cicli ed eliminando la funzione loop, questo è il mio codice vero e proprio: fa quello che deve fare, ma in quanto a prestazioni...ha senso secondo voi come cosa?

codice:
           while(true) {
             for (int i = 48; i < 58; i++) {
                 if (startLoop[i] == true) {
                     len[i] = num[i].length;
                     if (num[i][j[i]] != 0) {
                           snd[num[i][j[i]]].stop();
                         snd[num[i][j[i]]].setFramePosition(0);
                         snd[num[i][j[i]]].start();
                     }
                        j[i]++;
                        if (j[i] == len[i]) {
                            j[i] = 0;
                        }
                 }
             }
             try {
                 Thread.sleep(div);
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
         }