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

Langage Java Discussion :

classe qui implemente Runnable


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    145
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Septembre 2008
    Messages : 145
    Par défaut classe qui implemente Runnable
    bonjour,

    j'ai créé une classe qui contient des méthodes, ces dernières doivent utiliser run(), j'ai placer Runnable sur la classe et le compilateur (eclipse) me demande de rajouter run() pour la classe, si je le fais cela n'enlève pas les erreurs qui sont dans chaque méthode qui utilise run(), comment je peut résoudre ce pb ?


  2. #2
    Membre expérimenté Avatar de Amine_sas
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 245
    Par défaut
    Salut,

    Eclipse n'est pas le compilateur mais c'est bien javac .
    Pour ton problème, pourrais-tu poster le bout de code qui génère les erreurs.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut,
    Un tout petit bout de code et les erreurs données seraient les bienvenus...

    @Amine_sas : le compilateur est bien eclipse et pas javac... Eclipse a son propre compilo

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    145
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Septembre 2008
    Messages : 145
    Par défaut voici
    Faites pas trop attention c'est du brut de fonderie, je suis électricien ... j'apprends tout seul !

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    package DrawReadandLearn;
     
    import java.awt.Color;
    import java.awt.Graphics2D;
    import java.util.Random;
     
    public class Tasks implements Runnable{
    	private int sleepTime; // random sleep time for thread
        private String threadName; // name of thread
        private static Random generator = new Random();
     
    	public void DrlDrawRect(Graphics2D g2, String name, int x, int y, int dx, int dy, Color color){
    		threadName = name;
            sleepTime = generator.nextInt( 5000 );
            public void run()                                     
            {
               try // put thread to sleep for sleepTime amount of time
               {
                  System.out.printf( "%s going to sleep for %d milliseconds.\n",
                  threadName, sleepTime );
                  Thread.sleep( sleepTime ); // put thread to sleep
               } 
               catch ( InterruptedException exception )
               {
                  exception.printStackTrace();
               }  
               System.out.printf( "%s done sleeping\n", threadName );
            } 
    	}
     
     
    		public void DrlDrawCircle(Graphics2D g2, String name, int x, int y, int dx, int dy, Color color){
    			threadName = name;
    	        sleepTime = generator.nextInt( 5000 );
    		 public void run()                                     
    	        {
    	           try // put thread to sleep for sleepTime amount of time
    	           {
    	              System.out.printf( "%s going to sleep for %d milliseconds.\n",
    	              threadName, sleepTime );
    	              Thread.sleep( sleepTime ); // put thread to sleep
    	           } 
    	           catch ( InterruptedException exception )
    	           {
    	              exception.printStackTrace();
    	           }  
    	           System.out.printf( "%s done sleeping\n", threadName );
    	        } 
    	}
     
     
    		@Override
    		public void run() {
    			// TODO Auto-generated method stub
     
    		}
     
     
     
     
     
    }

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 357
    Par défaut
    run est présent en double, eclipse avait créé le prototype pour toi tout en bas.

    En fait il n'y a pas que ça... Dans chaque fonction tu redéfinis run pour implémenter un sleep ?

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    145
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Septembre 2008
    Messages : 145
    Par défaut suite
    oui, le sleep c'est pour le test uniquement. en fait dans chaque RUN je vais placer un bout de code différent ... le run en bas je comprends mais pourquoi je peux pas mettre des run dans chaque méthode ?

  7. #7
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    145
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Septembre 2008
    Messages : 145
    Par défaut suite
    en fait, je voudrais faire en sorte que chaque méthode soit une tache, mais c'est peut être pas possible ? il faut une classe pour une tâche ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Attends, si j'en crois ton code, tu définis une méthode dans une méthode, non ? Normal que ca ne compile pas...
    Je comprend pas bien l'intérêt ni ce que tu veux faire... Tu peux expliquer s'il te plait ?

  9. #9
    Membre expérimenté Avatar de Amine_sas
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 245
    Par défaut
    Salut,
    Citation Envoyé par greg08 Voir le message
    il faut une classe pour une tâche ?
    Ce serait mieux à mon avis. Pour ce faire commence par définir une classe abstraite qui contient le code commun aux différentes tâches et qui sera héritée par les classes représentant celles-ci.

    Pour le 1er problème, mets le code dupliqué dans la méthode run que eclipse a ajoutée et supprime les deux run définies à l'intérieur des deux méthodes.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Hmmm je crois avoir compris ce que tu voulais faire, corrige moi si je me trompe : Tu veux que chaque méthode lance la tache dans un nouveau thread ?
    Tu ne peux avoir qu'une méthode run par implémentation de Runnable, donc ici il me semblerait mieux d'avoir une classe par tâche. Limite elles peuvent toutes hériter d'une autre classe Task commune si beaucoup de code est en commun, mais définir plusieurs méthodes run est impossible. Cette méthode est automatiquement appelée quand tu lances un thread...

    EDIT : grillé...

  11. #11
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    145
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Septembre 2008
    Messages : 145
    Par défaut ok
    très bien merci, je croyais que c'était possible .... oui je vais faire cela !!!

  12. #12
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    145
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Septembre 2008
    Messages : 145
    Par défaut précision
    je voulais que chaque méthode SOIT une Thread ... mais c'est pas possible, hein ?

  13. #13
    Invité
    Invité(e)
    Par défaut
    Ben tu peux créer un nouveau thread pour chaque appel, MAIS un thread n'au qu'une seule méthode run... Il te faut donc plusieurs implémentations de Runnable pour chaque fonctionnalité.

  14. #14
    Membre expérimenté Avatar de Amine_sas
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 245
    Par défaut
    Salut,

    Tu ne peux définir plus qu'une méthode run() (sans paramètres) à l'intérieur d'une même classe. On t'a suggéré la solution de créer une classe par tâche mais si tu veux toujours te contenter d'une seule classe tu peux utiliser cette solution (beaucoup moins élégante):

    - Déclare une constante taskType dans la classe qui sera initialisée dans le constructeur par exemple.
    - Et dans la méthode run fais un switch (qui peut devenir monstrueux si le nombre de tâches est important).

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

Discussions similaires

  1. Imposer une classe qui implemente une interface
    Par hwoarang dans le forum C#
    Réponses: 11
    Dernier message: 12/10/2010, 18h48
  2. Changer un panel qui implemente Runnable
    Par Solly dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 01/02/2010, 09h28
  3. Réponses: 1
    Dernier message: 06/11/2009, 00h20
  4. comment compiler une classe sous linux qui implemente une interface
    Par nina08 dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 19/11/2008, 08h43
  5. [REFLEXION] Connaitre toutes les classes qui implémentent une interface
    Par narmataru dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 25/10/2006, 11h00

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