[Thread]Lancement et desctruction automatique
Salut,
J'ai une librairie qui contient une seule classe avec une seule méthode.
On peut donc l'utiliser en faisant :
Code:
1 2 3
|
MyClass myobject = new MyClass();
myobject.myMethod(); |
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.
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 :
Code:
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();
} |
Mais après avoir parcouru les tuts et forums, je me pose deux questions :
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.
Re: [Thread]Lancement et desctruction automatique
Citation:
Envoyé par Vignot
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 ?
Oui, il sera récupéré. Il faudra surtout penser à fermer les accés aux bases de données.
Citation:
Envoyé par Vignot
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 ?
Oui, ça va continuer.