Groups | Search | Server Info | Keyboard shortcuts | Login | Register
Groups > fr.comp.lang.java > #1709
| From | Yliur <yliur@free.fr> |
|---|---|
| Newsgroups | fr.comp.lang.java |
| Subject | Re: Terminer un Thread. |
| Date | 2018-09-14 05:46 +0200 |
| Organization | Groupes francophones par TrigoFACILE |
| Message-ID | <20180914054630.010fc8ab@free.fr> (permalink) |
| References | (1 earlier) <pnc4mh$cmk$1@dont-email.me> <20180913012022.478eee8b@free.fr> <5b99d812$0$20328$426a74cc@news.free.fr> <20180913073148.135d0f4f@free.fr> <5b9ae7e6$0$15086$426a74cc@news.free.fr> |
Le 13 Sep 2018 22:42:46 GMT
jp <bloiiing@yahoo.invalid> a écrit :
> Le Thu, 13 Sep 2018 07:31:48 +0200, Yliur a écrit :
> > - Est-ce que le fil exécute une boucle dans laquelle il passe
> > très souvent et obligatoirement à un endroit donné du code ?
>
> Il n'exécute qu'une boucle...
>
> > - Est-ce que le fil est parfois bloqué (appel à sleep pour un
> > long moment, attente d'une connexion réseau, ...) ?
>
> ... mais qui est très longue. C'est pour ça que je n'ai pas envie
> d'attendre que le test de la condition dans le while s'exécute. Je
> veux terminer tout de suite et proprement.
Là l'élément important c'est est-ce que la boucle est très longue parce
qu'elle réalise un traitement actif (des instructions sont exécutées en
permanence) ou bien elle est longue parce que le fil est bloqué à
différents moment ?
Dans le premier cas c'est plus délicat, il faut trouver des moments où
le fil va vérifier si on lui demande de s'arrêter. Dans ce cas,
peut-on avoir une vue globale du traitement ?
Dans le deuxième cas, quelles sont les opérations bloquantes ? Il y a
des chances pour qu'elles répondent aux interruptions des fils
d'exécution via la mécanique de java (interrupt()).
Suivant ton cas, j'essaierai d'expliquer plus en détail ce que tu peux
faire. La doc plus complète sur le sujet se trouve ici, mais c'est un
peu touffu :) :
<https://docs.oracle.com/javase/6/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html>
> > - Est-ce qu'il ne risque pas de laisser des données (visibles en
> > dehors du fil) dans un état incohérent ?
>
> Je peux l'éviter car ce n'est pas un thread compliqué. Il n'y a qu'un
> paramètre à prendre en compte. C'est un thread qui allume et éteint
> un relai. Il suffit juste de le mettre sur off avant de terminer le
> thread.
Il faudra bien faire attention quand même :
- Ne pas détruire le fil brutalement (avec Thread.stop(), qui de
toutes façons est obsolète).
- Utiliser un try/finally, pour être sûr que la finalisation soit
réalisée.
> Autre question: Si je fais Thread t = new Thread(); quelque part dans
> le programme et que je fais autre part if(t.isAlive()){code qui
> éteint le thread} est-ce que c'est correct et est-ce que ça génère
> une erreur si t n'existe pas encore?
Suivant ce que tu veux dire par "n'existe pas" :
- Si tu n'as pas initialisé la variable (elle vaut null) : non, tu
vas avoir une NullPointException.
- Si le fil n'a simplement pas été lancé (via start()) : oui,
d'après la doc (<https://docs.oracle.com/javase/6/docs/api/java/lang/Thread.html#isAlive()>)
(le fil est en vie s'il a été démarré mais n'est pas encore mort)
(note : j'ai donné des références à la doc de java 6, parce que c'est
ce que j'ai sous la main, mais consulter une doc plus à jour c'est
mieux ;) )
Back to fr.comp.lang.java | Previous | Next — Previous in thread | Next in thread | Find similar
Terminer un Thread. jp <bloiiing@yahoo.invalid> - 2018-09-12 22:27 +0000
Re: Terminer un Thread. Samuel DEVULDER <samuel.devulder@laposte-dot-net.invalid> - 2018-09-13 00:41 +0200
Re: Terminer un Thread. Yliur <yliur@free.fr> - 2018-09-13 01:20 +0200
Re: Terminer un Thread. jp <bloiiing@yahoo.invalid> - 2018-09-13 03:22 +0000
Re: Terminer un Thread. Yliur <yliur@free.fr> - 2018-09-13 07:31 +0200
Re: Terminer un Thread. jp <bloiiing@yahoo.invalid> - 2018-09-13 22:42 +0000
Re: Terminer un Thread. Yliur <yliur@free.fr> - 2018-09-14 05:46 +0200
Re: Terminer un Thread. jp <bloiiing@yahoo.invalid> - 2018-09-15 06:41 +0000
Re: Terminer un Thread. Yliur <yliur@free.fr> - 2018-09-15 14:24 +0200
Re: Terminer un Thread. jp <bloiiing@yahoo.invalid> - 2018-09-16 03:09 +0000
csiph-web