IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

code retour d'un thread


Sujet :

Entrée/Sortie Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Par défaut code retour d'un thread
    bonjour,

    dans mon thread au niveau du run , est-il possible de renvoyer un code retour ou bien quitter le thread par un return lors d'une erreur ?

    et dans le cas d'un system.exit(-1) peut ont le faire a l'interieur du run() ?

    sinon le thread il s'arrete quand ? une fois que le code du run() est termine ?

    Merci de votre aide.

  2. #2
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Citation Envoyé par andromeda
    est-il possible de renvoyer un code retour ou bien quitter le thread par un return lors d'une erreur ?
    Non

    Citation Envoyé par andromeda
    dans le cas d'un system.exit(-1) peut ont le faire a l'interieur du run() ?
    Oui, même si ça ne me paraît pas forcement très propre

    Citation Envoyé par andromeda
    sinon le thread il s'arrete quand ? une fois que le code du run() est termine ?
    Il existe cependant une technique qui permet de contourner le problème de ta première question (je pars du principe que le thread est déclaré en classe anonyme). L'astuce est d'utiliser un tableau déclaré en dehors du Thread.
    Pourquoi un tableau ? tout simplement car pour être utilisée dans une classe anonyme, une variable doit être déclarée final (ce qui n'empêche pas de modifier le contenu du tableau).
    Un truc dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    final int[] res = { 0 };
    Thread thread = new Thread() {
        public void run() {
            // traitement
            if(error) {
                res[0] = -1;
            }
        }
    };
    thread.start();
    thread.join();
    if(res[0] == 0) {
        System.out.println("OK");
    } else {
        System.out.println("Error : " + res[0]);
    }
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Par défaut
    Merci pour tes reponses.

    pour mon thread j'utilise une classe qui etend la threads , je ne sais pas si ca peut fonctionner avec ce genre de class.

    et si je faisais un stop() au moment d'un probleme ca pourrait marcher ?

  4. #4
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Dans ce cas tu peux directement créer un attribut dans ta classe pour y indiquer le resultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public class MyThread extands Thread {
     
        private int result = 0;
     
        public void run() {
            // traitement
            if(error) {
                result = -1;
            }
        }
     
        public int getResult() {
            return result;
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    MyThread thread = new MyThread();
    thread.start();
    thread.join();
    int res = thread.getResult();
    if(res == 0) {
        System.out.println("OK");
    } else {
        System.out.println("Error : " + res);
    }
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Par défaut
    oui en effet j'avais pas penser a ca , merci.

    sinon moi le start le je fait dans le constructeur de ma thread, je ne sais pas si c'est une bonne chose de le faire a l'interieur du constructeur, pour le join ca veut dire que pour continuer il faut attendre que la thread est termine, dans mon cas il y a une boucle sur l'accept donc je ne le fais pas je suppose.

  6. #6
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Citation Envoyé par andromeda
    sinon moi le start le je fait dans le constructeur de ma thread, je ne sais pas si c'est une bonne chose de le faire a l'interieur du constructeur
    Personnellement je préfère éviter, car tu pourrais avoir besoin d'instancier un thread sans le lancer immédiatement (mais si tu es sûr de toi, c'est toi qui vois).

    Citation Envoyé par andromeda
    pour le join ca veut dire que pour continuer il faut attendre que la thread est termine, dans mon cas il y a une boucle sur l'accept donc je ne le fais pas je suppose.
    J'ai utilisé la méthode join() dans mon exemple pour illustrer que la récupération du résultat doit se faire une fois que le thread est terminé. Mais ce n'était qu'un exemple, à toi de l'adapter à ton code .
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Par défaut
    j'ai essaye de le lancer comme ton code c'est a dire

    Clients thread = new Clients(client);
    thread.start();

    ca ne se lance pas parcontre quand je fais

    Clients c = new Clients(client);

    et que le start est dans le constructeur ca fonctionne

    as-tu une idee ?

    Merci de ton aide.

  8. #8
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    C'est bizarre.
    Peux-tu poster ton code ? (Par contre crée un nouveau sujet, ce problème n'ayant rien à voir avec celui du départ )
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

Discussions similaires

  1. Execution programme et récupération du code retour
    Par Dr_GonZO dans le forum Langage
    Réponses: 5
    Dernier message: 12/07/2005, 15h20
  2. Récupérer le code retour d'un batch
    Par mick84m dans le forum Linux
    Réponses: 4
    Dernier message: 11/05/2005, 17h09
  3. CODE RETOUR GENERE PAR PL/SQL POUR SHELL UNIX
    Par mimi_été dans le forum PL/SQL
    Réponses: 6
    Dernier message: 18/11/2004, 08h32
  4. code retour UNIX sur erreur ORA
    Par vinz_07 dans le forum Administration
    Réponses: 7
    Dernier message: 25/08/2004, 11h04
  5. [commande DOS] Récupérer le code retour d'un programme
    Par bobunny dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 04/06/2004, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo