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

Concurrence et multi-thread Java Discussion :

problème avec les commandes run() et start() de Thread


Sujet :

Concurrence et multi-thread Java

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juin 2007
    Messages : 3
    Points : 4
    Points
    4
    Par défaut problème avec les commandes run() et start() de Thread
    Je suis entrain de développer un jeu de billard pour mon projet d'école d'ingénieur et j'ai un petit problème avec la méthode run.

    J'ai définit la méthode run avec trois paramètre : run(double d, int i, double d1) et quand je l'appele avec la méthode start() je passe trois valeurs en paramètre et java me dis que je ne peux pas appliquer la méthode: start(double, int, double)...
    Que faire?
    d'avance merci -Juliette-

  2. #2
    Membre averti Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Points : 323
    Points
    323
    Par défaut
    C'est normal, la signature de cette méthode n'existe pas ! Les Thread n'ont qu'une méthode start() sans paramètre définie, tu ne peux pas y ajouter des éléments à ta guise. De fait, tu ne peux pas non plus définir une méthode run avec des paramètres. L'entrée de ces paramètres doit se faire au niveau du constructeur du Thread : tu crées 3 attributs pour ta classe Thread et tu lui passes lorsque tu construis ton Thread :

    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
    17
    18
     
    class Truc extends Thread {
     
        protected double d, d1;
        protected int i;
     
        public Truc(double d, int i, double d1){
            this.d = d;
            this.i = i;
            this.d1 = d1;
        }
     
        public run(){
            // Tu peux ici traiter d, i et d1 comme s'ils étaient des paramètres
            // de ta méthode, et en plus tu peux les modifier !
            // Elle est pas belle la vie ?
        }
    }

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 95
    Points : 66
    Points
    66
    Par défaut
    On m'a toujours dit d'extendre Thread était une pratique peu recommandable.

    Je te conseille d'étendre Runnable plutôt.

  4. #4
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2006
    Messages : 139
    Points : 147
    Points
    147
    Par défaut
    Citation Envoyé par lechewal
    On m'a toujours dit d'extendre Thread était une pratique peu recommandable.

    Je te conseille d'étendre Runnable plutôt.
    En étendant Thread, la classe ne peut pas étendre une autre classe, d'où l'utilité de l'interface Runnable, qui permet de contourner le problème et de faire de l'héritage multiple.

  5. #5
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juin 2007
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Merci pr ces précieuses informations! et j'utilise l'extends Thread sur conseil de mon prof! je ne connais pas du tout la class Runnable mais vu que je dois rendre ce travail lundi c'est un peu tard pour entreprendre un changement de cette importance!
    Par contre je me renseignerai sur cette class!
    merci a tous

  6. #6
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2006
    Messages : 139
    Points : 147
    Points
    147
    Par défaut
    Citation Envoyé par -Juliette-
    Merci pr ces précieuses informations! et j'utilise l'extends Thread sur conseil de mon prof! je ne connais pas du tout la class Runnable mais vu que je dois rendre ce travail lundi c'est un peu tard pour entreprendre un changement de cette importance!
    Par contre je me renseignerai sur cette class!
    merci a tous
    Runnable n'est pas une classe, mais une interface qui implémente une méthode run().

    Tu peux ensuite l'utiliser comme un Thread de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Définition de la classe
    class Truc extends Machin implements Runnable {
        ...
        public void run() {
            // Traitement
            ...
        }
    }
    
    // Utilisation
    new Thread(new Truc()).start();
    Par contre, comme pour la classe Thread, la méthode run() n'a pas de paramètres. Il faut que tu suives l'exemple de Rayndell pour contourner.

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 95
    Points : 66
    Points
    66
    Par défaut
    S'il n y a pas grand chose dans la méthode run, une classe anonyme est plus rapide

  8. #8
    Membre averti Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Points : 323
    Points
    323
    Par défaut
    Ce n'est pas plus rapide, c'est juste que ça évite d'allouer un espace mémoire pour le Thread, ce qui de toute manière ne prend que peu de place. Perso j'évite les classes anonymes, c'est souvent source d'erreurs et c'est peu lisible.

  9. #9
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 95
    Points : 66
    Points
    66
    Par défaut
    Plus rapide a coder

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec les commandes grep et uniq
    Par totoAussi dans le forum Linux
    Réponses: 5
    Dernier message: 04/11/2011, 14h08
  2. Des problèmes avec les commandes système
    Par edwithenwisdom dans le forum Administration
    Réponses: 6
    Dernier message: 02/05/2011, 14h15
  3. Réponses: 1
    Dernier message: 16/08/2009, 01h57
  4. probléme avec la commande ln (les espaces)
    Par yous18 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 31/03/2008, 09h31
  5. problème avec les lignes de commande
    Par Heavy Metal Hero dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 11/06/2007, 11h39

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