Salut,
J'ai une librairie qui contient une seule classe avec une seule méthode.
On peut donc l'utiliser en faisant :
Cette méthode effectue un traitement BD et est donc bloquante, sans parler du cas ou l'accès BD foire, ce qui serait dramatique pour les applis (temps réel) qui utilisent ma lib.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 MyClass myobject = new MyClass(); myobject.myMethod();
Je voudrais donc remplacer mon traitement BD par le lancement d'un Thread qui effectue ce traitement de façon autonome.
Je peux donc définir ma méthode avec quelque chose du genre :
Mais après avoir parcouru les tuts et forums, je me pose deux questions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public void myMethod() { Thread mythread = new Thread() { public void run() { /* Mon traitement BD */ ... } } mythread.start(); }
Premièrement, le thread va se trouvé dans l'état mort à la fin du traitement (pas de boucle while), mais va-t'il être récupéré par le garbage collector automatiquement ?
Deuxièmement, mon objet MyObject va être détruit après le retour de la méthode myMethod() et donc potentiellement avant la fin du traitement du thread. Est-ce que le thread va tout de même continuer son traitement ?
Voila, j'espère avoir été clair.
Merci à ceux qui maîtrisent les threads de m'apporter des précisions.
Partager