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

avec Java Discussion :

Un petit problème avec les Threads


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 62
    Points
    62
    Par défaut Un petit problème avec les Threads
    Salam Alikom

    je vais mettre le code d'abord puis explique le problème :

    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
    import java.lang.*;
     
    class EssaiRunnable {
        public static void main(String argv[]) throws InterruptedException {
    	Thread Z = new Thread (new Animal(5, "Z"));
    	Thread R = new Thread (new Animal(2, "R"));
    	Z.start();
    	R.start();
    	R.join();
    	Z.join();
        }
    }
     
    class Animal  implements Runnable {
        String monNom;
        int maVitesse;
        public Animal(int V, String nom) {
    	monNom = nom;
    	maVitesse = V;
        }
     
        public void run() {
    	for(int i = 0; i < 10; i++) {
    	    System.out.print(monNom);
    	    try {
    		sleep(1000/maVitesse);
    	    }   
    	    catch(Exception e) {;};
    	}
    	System.out.println("\n");
        }
    }
    Il ya un truc que je n'arrive pas à comprendre, "je lu quelque part" que l'interface Rennable décrit les methodes de la classe Thread, donc pq la méthode sleep n'est pas reconnu lors de la compilation sauf si j'ajoute extends Thread à la classe Animal ??

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 62
    Points
    62
    Par défaut
    je crois que je me suis trompé là, En consultant l'APi de Sun Runnable n'implémente que run().
    Donc la question et comment dois je faire dans ce cas ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10
    Points : 10
    Points
    10
    Par défaut Solution
    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
    class EssaiRunnable {
    
    	public static void main(String argv[]) throws InterruptedException {
    		EssaiRunnable essaiRunnable = new EssaiRunnable();
    		Thread Z = new Thread(essaiRunnable.new Animal(5, "Z"));
    		Thread R = new Thread(essaiRunnable.new Animal(2, "R"));
    		Z.start();
    		R.start();
    		R.sleep(100);
    		R.join();
    		Z.join();
    	}
    
    	public class Animal implements Runnable {
    		String monNom;
    
    		int maVitesse;
    
    		public Animal(int V, String nom) {
    			monNom = nom;
    			maVitesse = V;
    		}
    
    		public void run() {
    			for (int i = 0; i < 10; i++) {
    				System.out.print(monNom);
    				try {
    					Thread.sleep(100);
    				} catch (InterruptedException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}
    			System.out.println("\n");
    		}
    	}
    }

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 62
    Points
    62
    Par défaut
    Merci pioug je vais l'essayer et te mettre au courant du résultat

  5. #5
    Membre habitué Avatar de titourock
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 156
    Points : 190
    Points
    190
    Par défaut
    La méthode sleep est une méthode static de la classe thread tu ne peux l'appeler à partir d'une classe qui ne fait qu'implémenter Runnable. Il faut donc utiliser Thread.sleep.

    En fait, il y a deux façons de créer des threads :

    - en dérivant à partir de Thread (et donc du coup on peut utiliser sleep directement)

    - en implémentant l'interface Runnable qui possède une méthode run()

    La première méthode a un gros désavantage car la classe créée ne dérive alors que de Thread (Java n'a pas l'héritage multiple...) d'où...la deuxième méthode.
    Cependant, avec la deuxième méthode tu dois créer l'objet de la classe qui implémente Runnable puis créer un thread à partir de cet objet.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Maclasse m = new Maclasse();
    Thread t = new Thread (m);
    t.start();
    Dans la vie, il y a trois sortes de mathématiciens : ceux qui savent compter et ceux qui ne savent pas...

    Ne jamais jouer à saute-moutons avec une licorne...

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 62
    Points
    62
    Par défaut
    Voila titourock c'est à cause de ce désavantage que je cherche une solution. mais bon tout est clair maintenant
    Merci à vous deux
    on se verra d'içi 10 min avec un nouveau soucie

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

Discussions similaires

  1. Problèmes avec les thread et les pointeurs
    Par raspac dans le forum POSIX
    Réponses: 2
    Dernier message: 22/10/2006, 17h35
  2. [BOOST] Problème avec les threads
    Par SOAD08 dans le forum Dev-C++
    Réponses: 7
    Dernier message: 08/10/2006, 10h23
  3. [VBA-Excel] Petit problème avec les formulaires
    Par ash_rmy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/08/2006, 09h22
  4. Petit problème avec les accents circonflexes...
    Par Harvester dans le forum Autres Logiciels
    Réponses: 8
    Dernier message: 29/11/2005, 18h44
  5. Réponses: 5
    Dernier message: 10/05/2005, 10h22

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