Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > fr.comp.lang.java > #1709

Re: Terminer un Thread.

Path csiph.com!eternal-september.org!feeder.eternal-september.org!news.trigofacile.com!.POSTED.reverse-90.fdn.fr!not-for-mail
From Yliur <yliur@free.fr>
Newsgroups fr.comp.lang.java
Subject Re: Terminer un Thread.
Date Fri, 14 Sep 2018 05:46:30 +0200
Organization Groupes francophones par TrigoFACILE
Message-ID <20180914054630.010fc8ab@free.fr> (permalink)
References <5b9992bb$0$5486$426a74cc@news.free.fr> <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>
Mime-Version 1.0
Content-Type text/plain; charset=UTF-8
Content-Transfer-Encoding 8bit
Injection-Info news.trigofacile.com; posting-account="yliur@free.fr"; posting-host="reverse-90.fdn.fr:80.67.176.90"; logging-data="26718"; mail-complaints-to="abuse@trigofacile.com"
X-Newsreader Claws Mail 3.17.1 (GTK+ 2.24.32; x86_64-pc-linux-gnu)
Xref csiph.com fr.comp.lang.java:1709

Show key headers only | View raw


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 | NextPrevious in thread | Next in thread | Find similar


Thread

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