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

Java Discussion :

probléme dans l'execution du Thread


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Mars 2011
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 99
    Par défaut probléme dans l'execution du Thread
    bonjour

    j'ai crée une classe TestRunnable.java qui implémente de la interface Runnable

    j'ai fait ce code dans un Thread

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Thread t1=new Thread(new TestRunable("Rule-71",factory,ruleEngine));
    Thread t2=new Thread(new TestRunable("Rule-72",factory,ruleEngine));
    try
    {
    t1.join(); t2.join();
    }
    catch(InterruptedException e) {
    		 	        System.out.println ("echec d'attendre les thread") ;
    		 	      } 
    Thread t3=new Thread(new TestRunable("Rule-73",factory,ruleEngine));
    Thread t4=new Thread(new TestRunable("Rule-74",factory,ruleEngine));
    mais le temps d’exécution est plus grand par rapport a l’exécution du code sans Thread...
    un autre probléme il'ya un warning il ne peut pas accéder a la fonction run du classe TestRunnable

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    En même temps il y a plein de trucs que tu nous montres pas :
    - L'appel à start() sur les threads
    - Le constructeur de TestRunable et ce qu'il fait.
    - run() de TestRunable et ce qu'il fait.

    mais le temps d’exécution est plus grand par rapport a l’exécution du code sans Thread...
    Ben oui, les threads c'est pas une formule magique. Ça permet d'utiliser plusieurs cœurs de processeur au lieu d'un seul, dans le cas où il y a beaucoup de calcul parallélisable ou qu'on veut paralléliser.

    Mais lancer des threads et les synchroniser, ça a un coût. Si le calcul parallèle ne compense pas ce coût, alors utiliser plusieurs threads en parallèle prend plus de temps qu'un seul thread en séquence.

    Citation Envoyé par Etudiante_Ines Voir le message
    un autre probléme il'ya un warning il ne peut pas accéder a la fonction run du classe TestRunnable
    T'es trop vague, on est pas dans ta tête, montre les choses, un peu.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre actif
    Inscrit en
    Mars 2011
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 99
    Par défaut
    oui c'est vrai désolé monsieur
    bon j'ai fait

    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
    long temps1=System.currentTimeMillis();
    Thread t1=new Thread(new TestRunable("Rule-71",factory,ruleEngine));
    Thread t2=new Thread(new TestRunable("Rule-72",factory,ruleEngine));
    t1.start(); t2.start();
    try
    {
    t1.join(); t2.join();
    }
    catch(InterruptedException e) {
    		 	        System.out.println ("echec d'attendre les thread") ;
    		 	      } 
    Thread t3=new Thread(new TestRunable("Rule-73",factory,ruleEngine));
    Thread t4=new Thread(new TestRunable("Rule-74",factory,ruleEngine));
    t3.start(); t4.start();
    long temps2=System.currentTimeMillis() - temps1;
    mon but c'est d'optimiser le temps d'exécution

    le constructeur de la classe TestRunable.java
    private SWRLFactory factory;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private String ruleName;
    	private SWRLRuleEngine ruleEngine ;
    	public TestRunable(String ruleName, SWRLFactory factory, SWRLRuleEngine ruleEngine)
    	{
    		this.ruleName=ruleName;
    		this.factory=factory;
    		this.ruleEngine=ruleEngine;
    	}

    et la methode run

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public void run()
    	{
    		try
    		{
    			factory.getImp(ruleName).enable();
    		        ruleEngine.infer();
    		}
    		catch(Throwable e)
    		{	
    			e.printStackTrace();
    		}
    	}

    et il y a un warning au niveau l'instruction (Unknown Source)

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Et c'est quoi ce warning?

    Pour le reste du code, ben faut voir ce qui se passe dans ce enable. Mais a priori tu parallélise un code déjà rapide, du coup l'exécution en parallèle rajoute la surcharge de synchronisation et de création des thread bien supérieur au temps des threads individuel.

    Aussi, tu ne nous dit pas comment tu mesure tes performances


    De toutes façons, on ne parallélise que si c'est rentable. Tout n'est pas rentable à paralléliser.

Discussions similaires

  1. Problème d'intégration JMF dans l'executable
    Par RAS TAFARI dans le forum Multimédia
    Réponses: 0
    Dernier message: 07/02/2011, 19h12
  2. Réponses: 5
    Dernier message: 02/01/2011, 12h40
  3. Réponses: 8
    Dernier message: 19/04/2010, 16h23
  4. probléme dans le temps d'execution
    Par habbou dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 10/11/2006, 02h45
  5. Problème dans un thread
    Par BNS dans le forum MFC
    Réponses: 3
    Dernier message: 23/03/2006, 14h21

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