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 :

Découpage en Multi thread


Sujet :

Concurrence et multi-thread Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 347
    Par défaut Découpage en Multi thread
    Bonjour,

    J'ai réalisé une application qui:
    - Ouvre un fichier
    - lie le fichier
    - Extrait des données
    - test auprès d'un base SQL si les données existes déjà
    - Ajout la données à la base.
    ...
    puis refais l'étape 1...

    Mon appli fonctionne très bien mais et elle est lente car tout est dans un thread.
    J'aimerais découper mon programme en plusieurs thread:
    - un qui ouvre le fichier
    - un qui extrait les données
    - un qui gere la base de données


    Probleme, je connais mal le fonctionnement multi threadé.
    Je pense faire communiquer le 1er et 2 thread par socet, mais puis je transmettre de grosse donner (des fichier entiere 1Mo max) par socket.
    Entre le second thread et le troisieme, il me faut que les appels soit bloquant car on attend des réponses.
    Je pense faire des wait et notif. Mais est ce que je suis sur le bon chemin ?

    Enfin, si tout et bon, jaimerais avoir plusieurs instance du 1er et second thread pour aller plus vite. Comment puis je bien quantifier le nombre de thread max pour des performances optimale sans que ca impact le comportement (qu'il n'ai pas de conflit)

    Merci davance !

  2. #2

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 347
    Par défaut
    J'ai déjà lu le faq, mon application étant déjà un thread.
    Mon problème est plus lié à l'archtecture à adopter pour les multi thread.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Par défaut
    Tu as manifestement besoin de lire un tutorial ou une faq sur le sujet comme le mentionne PierreD87.

    Une chose cependant. Les threads partagent le même espace mémoire. Nul besoin donc d'utiliser les sockets pour échanger des données entre les threads. Il faut partager des objets entre tes threads. Evidemment, ce partage ne doit pas se faire n'importe comment au risque de laisser tes données dans un état incohérent. Pour cela, il faut utiliser "synchronized" ainsi que les méthodes "wait/notify" qui mettent en oeuvre la notion de moniteur.

    Lis un tuto donc et reviens avec des questions précises si tu as des soucis.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 347
    Par défaut
    En faite j'ai déjà lu plein de tutoriel, c'est comme ca que j'ai découvert wait/notify.
    Je voulais juste faire valider mon architecture, et ne pas passé à coté de fonction qui aurait peuvent m'aider (comme les notify).
    Bon je sais qu'il y a plus de codeurs, que d'architecture sur les forums mais bon...C'est pas grave, je vais coder et si jamais ca marche pas, ben je posterai un nouveau message en disant "ca marche pas pourquoi ? "

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Par défaut
    Citation Envoyé par laclac Voir le message
    En faite j'ai déjà lu plein de tutoriel, c'est comme ca que j'ai découvert wait/notify.
    Je voulais juste faire valider mon architecture, et ne pas passé à coté de fonction qui aurait peuvent m'aider (comme les notify).
    Bon je sais qu'il y a plus de codeurs, que d'architecture sur les forums mais bon...C'est pas grave, je vais coder et si jamais ca marche pas, ben je posterai un nouveau message en disant "ca marche pas pourquoi ? "
    Faire valider ton archi ... tu exagères un peu là ... tu n'as pas vraiment exposer ton archi, tu as exposé quelques idées.

    Alors, voilà quelques réponses ...

    1) faire une thread pour ouvrir le fichier ??? je ne vois pas l'intérêt.

    2) avoir une thread qui lit les données du fichier et les dépose dans un buffer pour qu'une autre thread aille consommer ces données du buffer pour les traiter me parait une bonne idée.
    On est alors dans un schéma producteur/consommateur et tu peux effectivement utilsier wait/notify pour gérer l'accès au buffer.

    Pour ce qui est d'utiliser plusieurs threads de production ... il faut que tu nous donnes plus d'informations pour que l'on puisse te répondre sur l'intérêt.

    edit: par ailleurs, mon post précédent apportait déjà une réponse à une de tes questions.

  7. #7
    Invité
    Invité(e)
    Par défaut
    il y a 2 manieres de decouper en thread :
    - soit il s'agit de plusieurs taches completement différentes, mais qui peuvent s'exécuter en parallele : reseau, interface
    - de nombreuses taches identiques : calcul, multiples clients sur un serveur

    Après, il faut un peu d'expérience pour savoir comment découper

    Postes donc ton architecture

Discussions similaires

  1. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  2. Réponses: 2
    Dernier message: 15/05/2004, 18h33
  3. Réponses: 16
    Dernier message: 30/01/2004, 11h05
  4. [VB6][active x] faire du multi-thread avec vb
    Par pecheur dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/05/2003, 12h01
  5. [Kylix] exception qtinft.dll et multi-threading
    Par leclaudio25 dans le forum EDI
    Réponses: 3
    Dernier message: 27/03/2003, 18h09

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