Vraiment grand besoin de votre aide pour les Threads

Signaler
Messages postés
23
Date d'inscription
dimanche 3 avril 2005
Statut
Membre
Dernière intervention
27 juillet 2007
-
Messages postés
23
Date d'inscription
dimanche 3 avril 2005
Statut
Membre
Dernière intervention
27 juillet 2007
-
Bonjour a tous !
J'espere vraiment que vous allez pouvoir m'aider car je m'arrache les cheuveux...
Pour mon soft que je suis en train de mettre en place (systeme de console unix) j'ai besoin de thread (enfin je pense), je vous explique mon probleme...
J'ai une interface graphique du type "console" et j'ai besoin que le programme réagisse quand la personne tape sur la touche entrée, jusque la pas de probleme j'ai utilisé les keylistener. Mais le probleme c'est que il doit y avoir une sorte de discussion entre le programme et la personne devant l'ordinateur donc il faut que la main passe de l'un a l'autre. C'est a dire que quand j'ai fini de taper mon texte, j'appui sur entrée et la l'ordinateur traite ma réponse et me redonne la main...
Le probleme c'est que je ne connais pas bien les threads et je ne sais pas trop comment m'y prendre, au niveau de l'architetecture des classes etc... Alors que je me dit que cela ne doit pas etre dur, juste un systeme de méssagerie avec des "synchronized" mais je n'y arrive pas...

Donc si quelqu'un peut m'aider... J'ai cherché du code deja fait pour un style de méssagerie pour tenter de comprendre en le lisant mais je n'ai rien trouvé...si vous en avez je suis prenneur...

Un grand merci à celui qui pourra m'aider !

8 réponses

Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
36
Salut:

KeyListener dans un programme console? 
________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts
Messages postés
23
Date d'inscription
dimanche 3 avril 2005
Statut
Membre
Dernière intervention
27 juillet 2007

non non je dis que j'ai fait un affichage de type console mais c'est du swing, tu vois c'est genre un ligne que tu tapes dans un Jtextfield qui aprés va dans un JtextArea et que est interprété par le programme...
Messages postés
25
Date d'inscription
dimanche 3 avril 2005
Statut
Membre
Dernière intervention
13 septembre 2008

c'est simple synchroniser  le thread l'affichage(console) avec le le thread de traitement(action sur le bouton entrer)
Messages postés
23
Date d'inscription
dimanche 3 avril 2005
Statut
Membre
Dernière intervention
27 juillet 2007

Mais comment tu bloques le traitement ? parce que sinon ma tache de traitement cherche a avoir la reponse du JTextField trop tot et donc tout plante, je ne sais pas comment bloquer l'acces à la variable par la tache de traitement jusqu'a ce que la personne ai repondu. pour etre plus clair :

1 - La console affiche une question...
2- La personne repond...
3- Le traitement travaille en fonction de la reponse.
4 -La console affiche une reponse...
etc...
Comment faire donc pour ne pas avoir le processus 3 qui se lance avant que la personne ai repondu dans pas partie 2... ?

merci beaucoup
Messages postés
16
Date d'inscription
vendredi 2 février 2007
Statut
Membre
Dernière intervention
1 juillet 2007

Tu peux très bien ne lancer ton traitement (ou tache 3) apres que l'utilisateur ai appuyé sur la touche "entrée" (dans un simple KeyListener) ou qu'il aie validé à l'aide d'un bouton "OK". Pas nécessairement besoin de Thread pour ça (bien que si ton traitement 3 est long, il risque de bloquer ton IHM pendant un certain temp et à ce moment la il faut mieux lancer des Threads).

Pour empecher l'utilisateur de saisir des valeur dans le JTextField tant que le traitement n'est aps terminé, il suffit de le bloquer (par un setEnable(false) ).
Messages postés
5363
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
30 avril 2021
110
Salut,

utilise les méthode wait et notify pour appliquer ta syncro entre tes thread

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
25
Date d'inscription
dimanche 3 avril 2005
Statut
Membre
Dernière intervention
13 septembre 2008

bonjour

ou bien utilse la méthode sleep(temp).
Messages postés
23
Date d'inscription
dimanche 3 avril 2005
Statut
Membre
Dernière intervention
27 juillet 2007

Comme utilise tu le wait et notify ?