la cosa più immediata è fare questo(usare la classe anonima secondo alguni non è elegante, però se la tua classe estende già una JFrame e devi usare tanti thread non devi crearti tante clsssi che estendono thread o tante che implementano Runnable):

codice:
public class Classe {
private Thread ciclo;
private boolean isGoing;

Classe() {

ciclo = new Thread(new Runnable() {
public void run() {
while(isGoing) {
//ciclo
}
}
});

}

public void startGoind() {
isGoind = true;
ciclo.start();
}

public void synchronized stopGoing() {
isGoing = false;
}

}
non ho provato il concetto è questo, magari dopo bisogna pure usare wait e notity, leggiti una guida che usare i thread al meglio non è semplice soprattutto dal punto di vista della sincronizzazione e della condivisione delle risorse.


edit:
sennò fai una bella cosa, fregatene che il metodo stop è deprecato e lo chiami sul thread che contiene il ciclo per fermare tutto.