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

Interfaces Graphiques en Java Discussion :

Traitement long > thread ?


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre régulier Avatar de keub51
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 116
    Points
    116
    Par défaut Traitement long > thread ?
    Bonjour,

    Je suis en train de concevoir un logiciel et une méthode que j'emploie doit lire des fichiers .txt d'une taille assez importante. ce traitement prend du temps et lorsque la méthode est apellé l'interface graphique ne réagit pas...

    Est ce que l'emploi de thread me permettrai de gérer ce traitement " a part " et donc de pouvoir acceder au logiciel tout en continuant le traitement en cours ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    File[] tab = repertoire.listFiles();
    	for(int i=0;i<count;i++)
    	{	
    	if(tab[i].isFile())
    		this.readFile(tab[i]);
    	}
    la méthode en cause est readFile(File file);

    si l'emploi de thread est la solution a mon problème comment coder cela ?

    comme ca ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    Thread monthread = new Thread();
    /******
    * il faut affecter le thread au traitement
    */*****
    File[] tab = repertoire.listFiles();
    	for(int i=0;i<count;i++)
    	{	
    	if(tab[i].isFile())
    		this.readFile(tab[i]);
    	}
    /******
    * tuer le thread 
    */*****
    
    
    
    merci
    .-*K.E.U.B*-.

  2. #2
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Points : 317
    Points
    317
    Par défaut
    regarde les tutos. il y en a plein sur le site...

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2007
    Messages : 80
    Points : 76
    Points
    76
    Par défaut
    Bonjour,

    Tu es tout à fait dans le cadre de l'utilisation d'un SwingWorker : executer une tâche longue sans bloquer l'UI.
    Tu trouveras des détails dans la FAQ GUI et dans la javadoc.
    La classe est intégrée au mustang et disponible en API pour les versions antérieures.

    A +
    Philippe.

  4. #4
    Membre régulier Avatar de keub51
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 116
    Points
    116
    Par défaut
    regarde les tutos. il y en a plein sur le site...
    oui mais avant de me lancer dans la compréhension des threads j'aimerai savoir si dans mon cas ca va maider ...
    .-*K.E.U.B*-.

  5. #5
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Points : 317
    Points
    317
    Par défaut
    Citation Envoyé par keub51 Voir le message
    oui mais avant de me lancer dans la compréhension des threads j'aimerai savoir si dans mon cas ca va maider ...
    oui tu as besoin des Thread, les Thread d une facon tres simplifie te permetent de faire plusieur traitements en parallele sur une meme machine, c est pas reallement parallele puisque c est un mono process machine, mais ta JVM fera en sorte de distribuer le temps de traitement sur tes differents process.
    en survolant les docs je suis certain que tu regelras ton probleme vite fait!!!

    Cheers,

  6. #6
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par jhaythem Voir le message
    oui tu as besoin des Thread, les Thread d une facon tres simplifie te permetent de faire plusieur traitements en parallele sur une meme machine, c est pas reallement parallele puisque c est un mono process machine, mais ta JVM fera en sorte de distribuer le temps de traitement sur tes differents process.
    en survolant les docs je suis certain que tu regelras ton probleme vite fait!!!

    Cheers,
    Les green threads gérés par la JVM c'était avant, çà fait un moment que la JVM crée des threads natifs et délègue la gestion à l'OS (histoire de perfs)
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  7. #7
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par keub51 Voir le message
    oui mais avant de me lancer dans la compréhension des threads j'aimerai savoir si dans mon cas ca va maider ...
    Clairement : OUI ! SwingWorker est d'ailleurs fait pour cela.

    AWT et Swing sont des API mono-threadé, c'est à dire qu'il n'y a qu'un seul et unique thread qui gère l'affichage : l'EDT (Event Disptach Thread).

    Et si je ne me trompe pas SWT utilise aussi le même principe...


    Plus d'info :
    http://rom.developpez.com/java-swingworker/
    http://gfx.developpez.com/tutoriel/j...ing-threading/

    a++

  8. #8
    Membre régulier Avatar de keub51
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 116
    Points
    116
    Par défaut
    donc en clair j'ai le choix entre Swinworker et les threads c ca ?

    lequel choisir ?
    .-*K.E.U.B*-.

  9. #9
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par keub51 Voir le message
    donc en clair j'ai le choix entre Swinworker et les threads c ca ?
    SwingWorker !
    SwingWorker utilise les threads et te simplifie leurs gestions au sein d'une application AWT/Swing...

    a++

  10. #10
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Le SwingWorker est mieux dans ce cas là car il permet à ton traitement d'interagir avec ton écran via, par exemple, une progressbar. C'est plutôt simple d'utilisation. Perso je les multiplies dans mes applis dès que de grosses quantités de données doivent être chargées.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

Discussions similaires

  1. [Multi-Thread] Mettre un msg d'attente lors d'un traitement long
    Par pepito62 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 29/03/2013, 20h43
  2. [Thread] Arreter un traitement long deja commencé
    Par Terminator dans le forum Général Java
    Réponses: 18
    Dernier message: 05/06/2007, 10h41
  3. Utiliser les threads pour les traitements long
    Par rach375 dans le forum Websphere
    Réponses: 3
    Dernier message: 14/11/2006, 12h08
  4. [Architecture] Traitement long
    Par metalpetsFR dans le forum Plateformes (Java EE, Jakarta EE, Spring) et Serveurs
    Réponses: 11
    Dernier message: 28/04/2006, 09h10
  5. Fermeture avec traitement long dans le onActivate
    Par benj63 dans le forum C++Builder
    Réponses: 14
    Dernier message: 20/03/2006, 18h54

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