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 :

Comment s'appelle ce concept sur Java - lié à la parallelisation


Sujet :

Java

  1. #1
    Inactif  

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3 064
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 064
    Points : 4 605
    Points
    4 605
    Par défaut Comment s'appelle ce concept sur Java - lié à la parallelisation
    Bonsoir,

    En Java je sais qu'il est possible de demander au compilateur d’exécuter 2 opérations de calcul mathématique simultanément.

    Résultat dans la console du compilateur parfois le résultat 1 sort avant le 2 , parfois c'est l'inverse .

    Il y a une notion de parallélisation et une seconde notion dont j'ai oublié le nom.

    En mode parallèle , il y a un calcul "langage" VS un calcul "machine" . En somme Java et / ou la JVM arrive à prendre en charge le calcul a la place du PC ...

    Pas moyen de mettre un nom dessus. Et vous est ce que cela vous parle ? Je demande car je n'arrive plus à mettre la main sur la doc qui en parle.

    Merci de l'aiguillage

    Dites moi si c'est pas clair je peux essayer d'apporter des exemples de " cas "

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    J'ai l'impression que tu veux parler de thread mais pas avec les bons termes.

    Par exemple "En somme Java et / ou la JVM arrive à prendre en charge le calcul a la place du PC" n'a pas vraiment de sens : le code de la JVM est exécuté par le PC, comme tout programme d'ailleurs, ou plus précisément au final par le microprocesseur, en résumé (il y a d'autres composants qui peuvent être utilisés pour des fonctions particulières, par exemple des GPU pour du graphique par exemple).

    Et le compilateur sert à compiler, soit transformer du code source en bytecode, pas vraiment à faire des calculs, bien que le processus de compilation comprend sûrement un certain nombre de calculs entre autres. Que le compilateur parallélise ou pas ne concerne pas les développeurs, en dehors d'une saine curiosité technique : c'est sa cuisine interne et ce qui compte c'est d'obtenir les .class qui correspondent au .java.

    Les threads peuvent être en effet simulés par la JVM, soit natifs (traités par le système d'exploitation, qui délègue éventuellement aux microprocesseurs)
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3 064
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 064
    Points : 4 605
    Points
    4 605
    Par défaut
    Bonjour,

    C'est bien cela , c'est bien le thread en effet.

    Merci de votre aide

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Je rejoins ce que Joel t'as très bien expliqué. (comme d'habitude

    Mais quand tu dis

    Résultat dans la console du compilateur parfois le résultat 1 sort avant le 2 , parfois c'est l'inverse .
    Il peut y avoir plusieurs raisons à cela.

    Mais dans mes vagues souvenirs (cours de C sous unix des années 2000), si tu as plusieurs threads qui écrivent sur la sortie standard (stdout ou System.out si tu préfères) tu n'as aucunes garantie de l'ordre d'affichage. (en imaginant que l'execution se fait toujours de la même manière)

    Que si tu écrits sur la sortie erreur tu auras plus de garantie.

    Joel, qu'en penses tu ? (j'aimerais être sur de ma mémoire car je ne trouve pas de réference sur le net, et ressortir mes cours des années 2000 n'est plus possible).
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par wax78 Voir le message
    Joel, qu'en penses tu ?
    Je ne suis pas un expert du domaine, loin de là, mais à ce que je sache oui rien n'est vraiment garanti sur l'ordre. L’ordonnanceur, lorsqu'il est logique, donne un peu de temps à chaque process, selon différentes circonstances. On peut paramétrer la priorité, et j'imagine que quand l’ordonnanceur à un choix à faire il l'utilise ça pour savoir quel thread privilégier, mais pour le reste, je n'y connais pas grand chose. La garanti est faible d'autant plus que même deux threads faisant exactement la même chose au sens algorithmique ne s'exécuteront pas forcément exactement de la même manière (sauf peut-être sur un vrai système temps réel et encore) . Il y a tellement de petits phénomènes qui peuvent légèrement faire varier l'exécution : disponibilité des ressources physiques et logiques, réveil de tâches de fond, impacts de calculs (un simple parcourt de chaînes de taille différente, une décompression d'images différentes, un décryptage de clef différente, un parcourt de compositions de tailles différentes... Donc dans l'absolu, un process commencé après un autre peut afficher son résultat avant que l'autre ait affiché son résultat suivant.
    Pour le System.out, à priori on a un buffer en mode producteur/consommateur : les producteurs se mettent en attente de pouvoir balancer leur flux dans le buffer (ça a l'air mais ce n'est pas sale) le consommateur réveille tout le monde, ils se ruent tous la-dessus comme des affamés, y'en un qui est élu, lequel et pourquoi, no lo sé, et les autres retournent se pieuter jusqu'à la prochaine.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Je suis d'accord avec ce que tu dis.

    Il va falloir que je regarde si je retrouve cette histoire dans mes vieux livre de cours car ça me perturbe d'avoir quelque chose ainsi en tête et de ne plus savoir la raison

    edit : Peut être que comme tu dis, stdout est bufferisé, mais pas stderr (ou quelque chose dans le gout)
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/11/2008, 09h24
  2. Réponses: 2
    Dernier message: 10/12/2007, 11h56
  3. comment bien débuter sur java
    Par mahjoubi dans le forum Langage
    Réponses: 7
    Dernier message: 22/08/2007, 11h53
  4. comment faire appel d'une application java dans un script shell?
    Par moradbe dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 01/02/2007, 19h55
  5. Réponses: 24
    Dernier message: 26/05/2006, 15h08

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