Méthode récursive avec Thread.sleep : StackOverflowError
Bonjour à tous,
Débutant en Java, j'ai un problème récurrent de débordement de pile.
Pour faire de l'animation vectorielle (Swing+JPanel), j'utilise une méthode de ce type :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
private void refresh() {
panel.repaint();
try {
Thread.sleep(40);
refresh();
}
catch(InterruptedException ex) {
ex.printStackTrace();
}
} |
Cela fonctionne très bien pendant plusieurs minutes mais finit systématiquement par envoyer une erreur de type "java.lang.StackOverflowError".
Ca semble une erreur légitime pour une récursion "infinie", mais étant donné que je demande au programme d'attendre 40ms avant de relancer la fonction je ne comprends pas quel est le problème.
Pourriez-vous m'éclairer sur ce point svp ?
Existe-t-il une meilleure méthode pour rafraîchir l'affichage à une fréquence donnée ?
Merci d'avance !