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 :

Est ce qu'il est possible d'exécuter une méthode par un thread particulier


Sujet :

Java

  1. #1
    Membre confirmé
    Profil pro
    Développeur Java
    Inscrit en
    Août 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2008
    Messages : 176
    Par défaut Est ce qu'il est possible d'exécuter une méthode par un thread particulier
    Bonjour,

    j'ai une question: est ce que c'est possible avant de faire l'appel d'une méthode de choisir le thread qui l'exécute?

    dans une programme j'ai une liste de thread chaque utilisateur possède un thread. j'ai une dans une autre partie j'ai une méthode qui traite l'action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public  void processAction (ActionRequest request, ActionResponse actionResponse)
    et qui selon des cas fait appel à d'autre méthode.
    est ce que c'est possible de rediriger le traitement au thread de l'utilisateur qui a lancer cette action.

    merci bien

  2. #2
    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 : 45
    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
    on chiosi pas sur quel thread on exécute une méthode (à moins de lancer un nouveaux thread). Unthread est une unité d'exécution qui suit, ligne après ligne, le code que tu lui a filé. Pas question d'interrompre ça.


    Donc non, on ne peux pas. C'est au code du Thread d'appeler la méthode, et pas l'inverse.

  3. #3
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    En fait tout dépend ce ce que font tes Threads des utilisateurs.
    Si, tu as des Threads qui sont bloqués en attente d'un code à exécuter tu peux effectivement "emballer" ton appel de méthode dans un Runnable (ou mieux: un Callable) et soumettre l'objet au Thread en attente. (qui l'exécute et se remet en attente style SingleThreadExecutor).

  4. #4
    Membre confirmé
    Profil pro
    Développeur Java
    Inscrit en
    Août 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2008
    Messages : 176
    Par défaut
    Citation Envoyé par professeur shadoko Voir le message
    En fait tout dépend ce ce que font tes Threads des utilisateurs.
    Si, tu as des Threads qui sont bloqués en attente d'un code à exécuter tu peux effectivement "emballer" ton appel de méthode dans un Runnable (ou mieux: un Callable) et soumettre l'objet au Thread en attente. (qui l'exécute et se remet en attente style SingleThreadExecutor).
    les threads que j'ai crée contient juste un sleep() dans le code run() et le code que je veux passé au thread existe dans un autre emplacement (un autre package) et je peu identifier le thread à partir de cet emplacement

    le question est comment dire au ce thread de ce charge d'exécuter cette méthode

  5. #5
    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 : 45
    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
    au lieu de faire un sleep, te thread doivent se mettre en attente sur une pile quelconque, retirer les éléments un à une de cette pile et en interpréter ce qu'il doivent faire. Exemple, tu peux les mette en attente sur un Queue contenant des Callable<>. T'as plus qu'àfaire rentrer, dans ton thread principal, des Callable dans cette queue et les dépiler dans les threads correspondant pour ensuite les appeler.

    dans tous les cas, c'est le thread client que fera le boulot d'appel avec ce genre de code!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while (continuer){
    Callable c = queue.take()
    c.call();
    }
    le thread principal fera lui ce genre de truc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Callable c = ...... ;  // à toi de jouer
    threadCiblé.getQueue().put(c);

  6. #6
    Membre confirmé
    Profil pro
    Développeur Java
    Inscrit en
    Août 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2008
    Messages : 176
    Par défaut
    merci pour les réponses

    une question, est ce qu'il y a un moyen pour que mon thread accède à la pile du thread principale dans le code de run et si oui SVP me donner un exemple.

    merci

  7. #7
    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 : 45
    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
    non

Discussions similaires

  1. [Débutant] Est-ce possible d'ouvrir une form par animation flash
    Par jeremyvb11 dans le forum VB.NET
    Réponses: 0
    Dernier message: 02/07/2012, 01h50
  2. Qu'est ce qui fait planter à l'appel d'une méthode
    Par JeanNoel53 dans le forum Général Java
    Réponses: 2
    Dernier message: 19/10/2010, 16h57
  3. Réponses: 1
    Dernier message: 14/07/2009, 09h37
  4. Exécution d'une méthode par un thread
    Par melleb dans le forum C#
    Réponses: 1
    Dernier message: 18/09/2008, 11h21
  5. Est-il possible d'exécuter une fonction à partir de fichier
    Par magic8392 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 16/09/2005, 13h59

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