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 :

JVM: Gestion des threads


Sujet :

Java

  1. #1
    Membre Expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 494
    Billets dans le blog
    8
    Par défaut JVM: Gestion des threads
    Bonjour,

    J'aurais une petite question vis-à-vis de la gestion des threads du côté de la JVM.

    Sur une machine multi-proco, les threads lancés par le développeur peuvent-ils être pris en charge par un coeur différent de celui qui "héberge" le processus de la JVM ou sont-ils limités à un seul coeur ? Si oui, existe-t-il un moyen de remédier à ça ?


    Je vous remercie d'avance pour votre réponse,

    Cordialement,

    Songbird.

  2. #2
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 326
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Sur une machine multi-proco, les threads lancés par le développeur peuvent-ils être pris en charge par un coeur différent de celui qui "héberge" le processus de la JVM ou sont-ils limités à un seul coeur ?
    "multi-core" ou "multi-proco" ?
    Pour "multi-core" : Je ne suis pas sûr que les threads que tu crées (cf : new Thread() + start() ) soient exécutés uniquement sur le même core que celui qui démarre ton programme Java. Pourquoi penses-tu que les threads d'un programme Java sont exécutés sur le même core ?

    A+
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  3. #3
    Membre Expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 494
    Billets dans le blog
    8
    Par défaut
    Salut,
    "multi-core" ou "multi-proco" ?
    Multi-core, pardon.

    Pourquoi penses-tu que les threads d'un programme Java sont exécutés sur le même core ?
    J'ai lu un article à propos du GIL (Global interpreter lock) en python. Ca n'a rien à voir, mais je me suis dis que ça pouvait également s'appliquer à la JVM. (la VM n'a alors le choix que de faire tourner ses threads sur le même coeur)

    EDIT: A moins d'avoir compris de travers.

  4. #4
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 326
    Billets dans le blog
    12
    Par défaut
    Le GIL en Python (pour l'implémentation officielle CPython) ou Ruby (pour l'implémentation officielle Ruby) n'existe pas en Java (pour l'implémentation officielle OpenJDK ou même celle de la version propriétaire Sun/Oracle > JDK 1.3), donc tu n'as pas à t'en faire je pense
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  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
    Les threads java sont des threads natifs en général.

  6. #6
    Membre Expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 494
    Billets dans le blog
    8
    Par défaut
    D'accord, merci pour vos réponses.

    Les threads java sont des threads natifs en général.
    Saurais-tu sous quelle condition les threads ne le seraient pas ? (natifs)

    Quelle différence peut-il y avoir entre un thread natif et un qui ne l'est pas ?

    Merci d'avance pour ta réponse.

  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
    Citation Envoyé par Songbird_ Voir le message
    Saurais-tu sous quelle condition les threads ne le seraient pas ? (natifs)
    La règle générale est: si t'as pas tour fait pour avoir des thread non-natifs, t'as des threads natifs. Donc à moins d'avoir un environnement exotique et une jvm custom, tu ne devrais pas avoir à te poser la question;
    Citation Envoyé par Songbird_ Voir le message
    Quelle différence peut-il y avoir entre un thread natif et un qui ne l'est pas ?
    https://en.wikipedia.org/wiki/Green_threads

  8. #8
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 326
    Billets dans le blog
    12
    Par défaut
    Tu as des threads natifs si leur ordonnancement est géré par l'OS (ce qui est le cas pour une JVM standard), si tes threads sont gérés par une VM alors ils ne sont pas natifs (ex: les greens threads pour les JVM particulières).

    si t'as pas tour fait pour avoir des thread non-natifs, t'as des threads natifs
    Je n'ai pas compris le sens de cette phrase mais pour le reste je suis d'accord.
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  9. #9
    Membre Expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 494
    Billets dans le blog
    8
    Par défaut
    Merci pour le lien.

    Donc j'en conclue que les greens threads sont bien moins performants que les threads natifs, sauf lors du "démarrage" du thread et de la synchronisation des données. (ce qui n'est pas franchement critique)

    Bonne soirée à vous !

  10. #10
    Membre Expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 494
    Billets dans le blog
    8
    Par défaut
    Je n'ai pas compris le sens de cette phrase mais pour le reste je suis d'accord.
    Je suppose qu'il voulait dire que tant que le développeur n'entrave pas la JVM avec des flags à son lancement, elle ne devrait pas lancer dans threads non-natifs.

    EDIT: Oulah, je n'avais pas vu que tu m'avais répondu, Gugelhupf, désolé du flood.

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

Discussions similaires

  1. gestion des threads
    Par yanis97 dans le forum Langage
    Réponses: 6
    Dernier message: 20/04/2006, 12h41
  2. Gestion des Threads
    Par Nalfouille dans le forum MFC
    Réponses: 3
    Dernier message: 05/04/2006, 16h29
  3. Gestion des threads
    Par yanis97 dans le forum C++
    Réponses: 6
    Dernier message: 08/03/2006, 09h39
  4. GEstion des thread
    Par Julien Dufour dans le forum Access
    Réponses: 8
    Dernier message: 06/10/2004, 14h28
  5. [reseaux] Gestion des threads en perl
    Par totox17 dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 28/11/2002, 09h40

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