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

avec Java Discussion :

Débutant : thread ou process


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2009
    Messages : 167
    Par défaut Débutant : thread ou process
    J'ai une appli qui doit faire beaucoup de calculs.

    J'ai plusieurs fois le même objet, qui se calcule lui-même (seuls les datas à l'intérieur de l'objet sont différents). Les routines de calcul sont des méthodes classiques et banales, mais lourdes.

    Le code typique est :

    MaClasse monObjet = new MaClasse( desDatas);
    monObjet.compute();


    Donc l'idée me vient de traiter plusieurs objets de front. Mais : thread ou process ?

    C'est facile d'implémenter des threads : mais est-ce que ceux-ci tirent parti des processeurs multi-core ?

    En furetant sur le net, on dit que les threads font du temps partagé : si c'est exact cela ne me sert à rien. Mais est-ce exact ?

    Merci à vous.

    Christian

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Réponse courte : les threads ! Ce sera bien plus simple à gérer.




    Réponse longue : oui les threads fonctionnent bien en temps partagé... mais c'est aussi le cas des process !
    Tous les process/threads qui tournent sur le PC se partage le temps CPU du (ou des) processeurs.

    Si tu n'as qu'un seul CPU, tu n'auras pas de vrai parallélisation des traitements.
    Mais bien sûr si tu as plusieurs CPU (ou coeurs), les traitements (process ou threads) seront bien dispatché sur les différents coeurs, avec de vrai traitements en parallèle.

    Du coup l'avantage des threads c'est que tu restes dans le même process, et que tu pourras facilement partager les données.

    Quelques trucs pratiques :
    • Runtime.getRuntime().availableProcessors() te retournera le nombre de processeurs logiques du système.
      Tu peux te baser là dessus pour optimiser ton nombre de thread (inutile d'en faire plus si tu va faire des traitements lourds).
    • La classe Executors permet de gérer facilement les pools de thread ou autre. Par exemple Executors.newFixedThreadPool() te permet de créer un pool de 'n' thread...
    • Les BlockingQueue sont très pratique pour se partager des données entre différents threads...



    a++

  3. #3
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2009
    Messages : 167
    Par défaut
    Super réponse. Merci beaucoup.

    Christian

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

Discussions similaires

  1. [Débutant]Thread Tomcat journalier pb de sleep
    Par mediateur59 dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 06/11/2006, 11h39
  2. [Débutant][Thread] Comment lancer en boucle un affichage
    Par comme de bien entendu dans le forum Général Java
    Réponses: 6
    Dernier message: 03/02/2006, 10h20
  3. [Débutant] [Thread] Faire patienter un programme java....
    Par yoxx dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 25/09/2005, 12h36
  4. [Débutant] Empêcher un process d'être "iconisé"
    Par kelebrindae dans le forum MFC
    Réponses: 10
    Dernier message: 03/03/2005, 14h50
  5. [débutant] thread et TMediaPlayer
    Par Tymk dans le forum C++Builder
    Réponses: 5
    Dernier message: 15/01/2005, 14h06

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