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 :

Executors et priorité de thread


Sujet :

Concurrence et multi-thread Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 90
    Par défaut Executors et priorité de thread
    Bonjour,

    Je travaille actuellement sur une appli multithreadé en utilisant un pool de thread du type ScheduledThreadPool();

    executorService = java.util.concurrent.Executors.newScheduledThreadPool(corePoolSize);
    puis
    executorService.schedule((Runnable) job, (long) delay, TimeUnit.MILLISECONDS);
    Ma question est la suivante, comment puis-je faire pour inclure la notion de priorité de mes threads ?

    Pour le moment j'utilise une solution qui me semble peu clean, mais je n'en connais pas d'autre....

    Merci de votre aide.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 18
    Par défaut
    Bonjour,

    La méthode newScheduledThreadPool() peut accepter en deuxième argument une implémentation de ThreadFactory.

    Libre à toi d'implémenter ThreadFactory comme tu le veux pour définir la priorité de tes Threads.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 90
    Par défaut
    Merci pour ta réponse.

    J'ai bien tenté cette solution mais la création de Threads (et c'est l'intérêt d'un pool de threads) n'est faite qu'une fois pour plusieurs Runnable.
    Or c'est en fonction du Runnable que j'ai à confier que dépend la priorité.

    Il faudrait aller plus loin pour qui je puisse faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    executorService.schedule((Runnable) job, (long) delay, TimeUnit.MILLISECONDS, job.getPriority'));
    Mais il ne semble pas possible, de toute façon, de modifier la priorité d'un thread déjà créé ????!!!!!

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 18
    Par défaut
    On peut changer la priorité d'un Thread.

    Dans ton cas, le seul moyen immédiat que je vois est de faire comme dans le lien que tu as indiqué (changer la priorité, yield(), remettre l'ancienne priorité).

    Pour faire plus propre :
    - Soit tu fais ta propre implémentation de ExecutorService
    - Soit tu fais un code du genre (juste histoire de factoriser) :
    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 abstract MyAbstractRunnable implements Runnable {
      public void run() {
        Thread t = Thread.currentThread();  
        int oldPriority = t.getPriority();  
        t.setPriority(getPriority());  
        Thread.yield();  
        run0();
        t.setPriority(oldPriority);  
      }
     
      protected abstract int getPriority();
     
      protected abstract void run0();
    }
    Et ensuite tous tes tasks extends MyAbstractRunnable en surchargeant run0 et getPriority comme elles l'entendent.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 90
    Par défaut
    Ok, merci pour ton aide.

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

Discussions similaires

  1. Pb priorite de thread
    Par Signal40 dans le forum POSIX
    Réponses: 2
    Dernier message: 12/12/2009, 22h38
  2. [WD14] Priorité de Thread
    Par mail.spam dans le forum WinDev
    Réponses: 1
    Dernier message: 12/10/2009, 05h15
  3. ThreadPool priorité - process - thread
    Par stephane.julien dans le forum C#
    Réponses: 3
    Dernier message: 03/04/2008, 10h15
  4. problème de priorité des threads
    Par wauant dans le forum C
    Réponses: 4
    Dernier message: 18/04/2007, 08h51
  5. problème de priorité des threads
    Par wauant dans le forum Développement
    Réponses: 1
    Dernier message: 12/04/2007, 10h49

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