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 :

Traitement batch à threads décallés


Sujet :

Concurrence et multi-thread Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 25
    Par défaut Traitement batch à threads décallés
    Bonjour,
    si je ne suis pas dans le bon topic merci de me déplacer.

    Un collègue a développé un programme batch java mettant 8 heures à s’exécuter. Ce programme fait tourné 10 threads (chaque thread s'exécute en 8 heures) et il démarre ses threads toutes les deux secondes.
    Il dit que c'est pour que le serveur gére mieux sa montée en charge.

    Qu'en pensez vous ?

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Ça dépend de ce qui est fait exactement par le batch.

    Personnellement, je préfère attendre un signal précis, comme le fait d'avoir atteint telle étape représentant une bonne partie de la montée en charge, plutôt qu'attendre deux secondes. Mais c'est limite un détail.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 25
    Par défaut
    Le batch fait du traitement de données sur une base PostgreSQL.
    Mais je ne comprend pas bien ce que çà change de faire çà au lieu de démarrer tous les thread en même temps, de toute façon ils s’exécutent tous pendant 8 heures.

    En gros ma question c'est .... j'ai 3 threads
    A et B et C, mettant chacun un certain temps à s'executer (plusieurs heures)

    Est ce que faire
    A()
    sleep(2s)
    B()
    sleep(2s)
    C()

    est plus efficace ? et si oui pourquoi et à quel niveau ?

    que de faire
    A()
    B()
    C()

    ps(A et B et C s’exécute en parallèle bien sur)

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Avec si peu d'information, impossible de donner une réponse définitive, mais il semblerait que ça ne sert à rien.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 25
    Par défaut
    Et est ce çà pourrait servir dans certains cas ?

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Ce n'est pas complètement impossible.

    Mais si c'est le cas, il serait plus propre d'attendre un signal précis, plutôt qu'un nombre de secondes.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 25
    Par défaut
    Si quelqu'un a un exemple d'utilisation de ce genre de méthodes je suis preneur. En attendant vu ce que j'ai vu dans son code je considère que ça ne vaut pas un clou. Et dire que çà tourne en production sur une grosse enseigne de la grande distribution du nord de la France en 5 lettres. Mais loin d'être amicale ... héhé

  8. #8
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Citation Envoyé par BaBuX Voir le message
    Et est ce çà pourrait servir dans certains cas ?
    Chaque cas est unique. Voici une possibilité que j'ai connue sur un projet : le thread doit charger des données de paramétrage en base. Des processus critiques fonctionnent en permanence à côté des threads. Un chargement massif des données sur les thread diminue grandement les performances des processus critiques en mettant des contentions sur les tables de paramétrages. Il faut donc y aller mollo et lancer les threads avec quelques secondes d'intervalle.

    Dans ton cas, si aucun processus critique en terme de temps de réponse n'existe et/ou si les threads ne font rien de spécial autre que leur traitement pendant les 2 premières secondes au démarrage, alors la pause est inutile.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

Discussions similaires

  1. Traitement long > thread ?
    Par keub51 dans le forum Interfaces Graphiques en Java
    Réponses: 9
    Dernier message: 27/09/2007, 14h38
  2. Form qui se fige lors d'un traitement malgré thread
    Par SesechXP dans le forum Windows Forms
    Réponses: 7
    Dernier message: 31/05/2007, 11h46
  3. Réponses: 2
    Dernier message: 26/10/2006, 14h10
  4. [MySQL] Comment ecrivez-vous vos traitements batch
    Par ouioui2000 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/10/2005, 15h36
  5. [Traitement batch]lancer un traitement independant des users
    Par Wessim dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 08/06/2005, 20h43

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