Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2746 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] Comment laisser tourner une méthode en arrière plan ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA] Comment laisser tourner une méthode en arrière plan ?

n°731508
tuxbleu
renie ses origines
Posté le 19-05-2004 à 14:46:03  profilanswer
 

Je suis en train de faire un jeu.
Je souhaiterais faire tourner ma partie reseau, qui s'occupe d'échange d'informations, en arrière plan, pendant que je joue au jeu( via une interface Swing).
Sans interface, tout ce passe bien, mais quand je l'intègre (l'interface), une fois que le reseau prends la main, je pe kasi rien faire dans mes fenetre swing.  
 
Kelkun a une idée ?
 
merci.

mood
Publicité
Posté le 19-05-2004 à 14:46:03  profilanswer
 

n°731513
gfive
Posté le 19-05-2004 à 14:48:17  profilanswer
 

Il faut que tu lances la gestion du réseau dans une thread à part.

n°731545
tuxbleu
renie ses origines
Posté le 19-05-2004 à 14:56:57  profilanswer
 

gfive a écrit :

Il faut que tu lances la gestion du réseau dans une thread à part.


 
je suis pas un pro en thread, je lis de la doc la dessus en ce moment. Il fo ke je lance mon interface dans un thread, et mon reseau dans un autre ?  
Ou alors je lance l'interface et elle crée le thread reseau ?  
 

n°731555
gfive
Posté le 19-05-2004 à 15:06:13  profilanswer
 

Ca serait mieux que l'interface lance une thread pour le réseau, oui.
 

n°731572
tuxbleu
renie ses origines
Posté le 19-05-2004 à 15:15:03  profilanswer
 

gfive a écrit :

Ca serait mieux que l'interface lance une thread pour le réseau, oui.


 
Merci de tes réponses.  :)  
 
J'ai encore une question : mon interface va creer un thread reseau. J'ai des méthodes dans réseau qui lancent des méthodes de mon interface. C'est possible ou pas ? Je vais tester bien sur, mais autant que je sache si je perd mon temps...
 
merci  :)

n°731574
gfive
Posté le 19-05-2004 à 15:16:32  profilanswer
 

oui, c'est tout à fait possible!

n°731578
tuxbleu
renie ses origines
Posté le 19-05-2004 à 15:19:27  profilanswer
 

gfive a écrit :

oui, c'est tout à fait possible!


 
 :love: c'est toi le meilleur ;) ! Bon ben c partie ! j'ai du boulot, mais si ca marche, je te vénèrerais ... :pt1cable:  
 
merci encore.

n°731598
gfive
Posté le 19-05-2004 à 15:30:37  profilanswer
 

1 - je suis pas le meilleur,
2 - ca marchera, c'est sûr : j'ai fait ça des tas de fois.
3 - je veux pas que tu me vénères : ça tient chaud, et vu l'été qui s'annonce, c'est pas une bonne idée.

n°731627
tuxbleu
renie ses origines
Posté le 19-05-2004 à 15:43:02  profilanswer
 

gfive a écrit :

1 - je suis pas le meilleur,
2 - ca marchera, c'est sûr : j'ai fait ça des tas de fois.
3 - je veux pas que tu me vénères : ça tient chaud, et vu l'été qui s'annonce, c'est pas une bonne idée.


 
Bon,je te propose un deal : je te vénère pas, et tu réponds à une dernière kestion ;) :  
 
Ma classe réseau contiendra certe une méthode run(), mais aussi d'autres méthodes que je suis suceptible d'appeler depuis mon interface.
Ca posera un problème ?
 
Perso je suppose que non, pour peu que je pense a glisser un sleep pour rendre la main. t'en pense koi, toi ?

n°731636
gfive
Posté le 19-05-2004 à 15:45:45  profilanswer
 

euh...non, ça doit pas poser de problème, même sans sleep, enfin, je crois pas : ça ne sera pas exécuté par la thread lancée pour gérer le réseau : c'est pas parce qu'une classe implémente Runnble que toutes ses méthodes sont exécutées par la thread associée.

mood
Publicité
Posté le 19-05-2004 à 15:45:45  profilanswer
 

n°731665
tuxbleu
renie ses origines
Posté le 19-05-2004 à 15:53:46  profilanswer
 

gfive a écrit :

euh...non, ça doit pas poser de problème, même sans sleep, enfin, je crois pas : ça ne sera pas exécuté par la thread lancée pour gérer le réseau : c'est pas parce qu'une classe implémente Runnble que toutes ses méthodes sont exécutées par la thread associée.


Bon ben en téorie, me voila sortie des emmerd...
enfin    "en théorie, la théorie et la pratique, c'est exactement la meme chose, en pratique, c'est complement différent" citation de mon prof d'infographie.
 
Le sleep, c'est paske j'ai lu que selon l'environement, ils est possible que les différents threads ne s'exécutent pas en parallèles si on ne rends pas la main.
 
c'est pas parce qu'une classe implémente Runnble que toutes ses méthodes sont exécutées par la thread associée. -> voila qui est parfait !

n°731668
tuxbleu
renie ses origines
Posté le 19-05-2004 à 15:54:42  profilanswer
 

encore une fois merci d'avoir pris le temps de répondre ! :)

n°731674
gfive
Posté le 19-05-2004 à 15:56:06  profilanswer
 

Enfin, j'espère ne pas avoir dit de conneries, hein : j'ai fait des trucs comme ça en AWT, mais il est possible que ça pose des problèmes en swing.

n°731685
tuxbleu
renie ses origines
Posté le 19-05-2004 à 15:59:38  profilanswer
 

gfive a écrit :

Enfin, j'espère ne pas avoir dit de conneries, hein : j'ai fait des trucs comme ça en AWT, mais il est possible que ça pose des problèmes en swing.


 
Euh me casse pas le moral !  :o  
 
Swing est une surcouche de AWT, alors no souci! (j'essaie de me persuader ! ).
 
:)
++

n°731686
gfive
Posté le 19-05-2004 à 16:01:14  profilanswer
 

huhuhu

n°731692
nraynaud
lol
Posté le 19-05-2004 à 16:03:23  profilanswer
 

tuxbleu a écrit :

J'ai des méthodes dans réseau qui lancent des méthodes de mon interface. C'est possible ou pas ?

oui, à condition d'utiliser SwingUtilities.invokeLater()
 
comme précisé là :
http://java.sun.com/products/jfc/t [...] eads3.html
 
 
(4)
 
 
 
 
edit : et mets une bonne doc de quelle thread appelle quelle méthode.


Message édité par nraynaud le 19-05-2004 à 16:05:25

---------------
trainoo.com, c'est fini
n°731698
gfive
Posté le 19-05-2004 à 16:06:36  profilanswer
 

Ca dépend de ce qu'il fait, je suis désolé!
 
Imagine qu'il affiche une liste de gens connectés dans une JTable : à la déconnection d'un mec conecté, il reçoit un évènement => il peut directement appeller son modèle, et réprcuter le changement, normalement.
 
Le coup du invoke later ne vaut que si le modèle peut prendre du temps à fournir ses données d'après ce que j'ai compris des 10 premières lignes de l'article, non?

n°731707
nraynaud
lol
Posté le 19-05-2004 à 16:14:11  profilanswer
 

gfive a écrit :

Ca dépend de ce qu'il fait, je suis désolé!
 
Imagine qu'il affiche une liste de gens connectés dans une JTable : à la déconnection d'un mec conecté, il reçoit un évènement => il peut directement appeller son modèle, et réprcuter le changement, normalement.
 
Le coup du invoke later ne vaut que si le modèle peut prendre du temps à fournir ses données d'après ce que j'ai compris des 10 premières lignes de l'article, non?

écoute, je vais à la Roche de Solutré, pendant ce temps tu te renseignes sérieusement et on en discute après.
 
Mais là se fonder sur 10 lignes d'un article pour mettre des points d'exclamation, c'est vraiment n'importe quoi.


---------------
trainoo.com, c'est fini
n°731715
gfive
Posté le 19-05-2004 à 16:16:58  profilanswer
 

Ok, ok, au temps pour moi : je n'ai pas fait de Swing depuis trop longtemps : il se trouve bêtement que en AWT pur, ce genre de choses marche très bien, et que pour le cas à la con de l'attente de données non disponibles, j'avais codé un machin qui (comme c'est étrange) empilait des traitements à exécuter après réception des infos. Scuse.
Mais je connaissais pas cette putain de SwingUtilities. Il est temps que je me remette à Swing! :)
 
Edit : en fait, j'ai juste eu du pot que ça marche, même. :D:D


Message édité par gfive le 19-05-2004 à 16:32:18
n°731735
tuxbleu
renie ses origines
Posté le 19-05-2004 à 16:30:21  profilanswer
 

nraynaud a écrit :

oui, à condition d'utiliser SwingUtilities.invokeLater()
 
comme précisé là :
http://java.sun.com/products/jfc/t [...] eads3.html
 
(4)
edit : et mets une bonne doc de quelle thread appelle quelle méthode.


 
 
 
Je c pas si je v dire une connerie : mes méthodes de réseau n'appellent pas directement les méthodes de mon interface. J'ai un controleur de dialogue (Modèle SEEHEIM) qui gère les communications. Alors peut-etre que le débat qui a eu lieu sur le fait d'utiliser SwingUtilities.invokeLater()
n'a pas a avoir lieu ? ou alors ca change rien ?
 
Bon, je v coder un peu, et je vous tient au courant.


Message édité par tuxbleu le 19-05-2004 à 16:34:15
n°731741
chantal_13
Posté le 19-05-2004 à 16:33:09  profilanswer
 

EUHHH j'aurais une question : j'ai développé une IHM et je souhaiterais séparer en plusieurs classes la partie méthodes (connexion, déconnexion, évènements...) de la partie interface graphique ! Il paraît qu'il fo créer les différents panels de la frame et les instancier dans la classe principale ?!?!?! J'ai testé mais dès que j'ai mon évènement sur un bouton, par exemple, la variable correspondant au bouton n'est pas reconnue ! Pourriez vous m'aiderrrr !!! Merci

n°731748
tuxbleu
renie ses origines
Posté le 19-05-2004 à 16:36:18  profilanswer
 

chantal_13 a écrit :

EUHHH j'aurais une question : j'ai développé une IHM et je souhaiterais séparer en plusieurs classes la partie méthodes (connexion, déconnexion, évènements...) de la partie interface graphique ! Il paraît qu'il fo créer les différents panels de la frame et les instancier dans la classe principale ?!?!?! J'ai testé mais dès que j'ai mon évènement sur un bouton, par exemple, la variable correspondant au bouton n'est pas reconnue ! Pourriez vous m'aiderrrr !!! Merci


 
Tu peut creer un topic stp. Je viendrais participer aux réponses avec plaisir, mais j'aimerais que mon topic serve à débattre de mes problèmes. merci

n°731749
chantal_13
Posté le 19-05-2004 à 16:37:41  profilanswer
 

désolée suis NOVICE....comment créer un topic? c'est quoi exactement un topic??? :sweat:  :heink:

n°731752
Profil sup​primé
Posté le 19-05-2004 à 16:38:41  answer
 

un topic c'est un sujet (comme celui dans lequel tu post)

n°731755
chantal_13
Posté le 19-05-2004 à 16:40:27  profilanswer
 

je veux bien en créer un mais comment faire?

n°731756
Profil sup​primé
Posté le 19-05-2004 à 16:40:58  answer
 

http://forum.hardware.fr/icones/newsujet_big.gif

n°731757
tuxbleu
renie ses origines
Posté le 19-05-2004 à 16:41:03  profilanswer
 

chantal_13 a écrit :

désolée suis NOVICE....comment créer un topic? c'est quoi exactement un topic??? :sweat:  :heink:


 
Tu clikes sur Nouveau sujet, tu mets un titre, etc...


Message édité par tuxbleu le 19-05-2004 à 16:42:05
n°731760
chantal_13
Posté le 19-05-2004 à 16:44:02  profilanswer
 

oui désolée jai trouvé ca ya 5 min, javais pas trop vu en fait ke cété juste en bas de page

n°731797
tuxbleu
renie ses origines
Posté le 19-05-2004 à 16:54:44  profilanswer
 

Bon pour ma part, ya un truc ki dois merder : je crée mon interface, je lance le thread de mon réseau, mais l'interface ne réponds pas...:'(


Message édité par tuxbleu le 19-05-2004 à 16:55:05
n°731839
tuxbleu
renie ses origines
Posté le 19-05-2004 à 17:09:51  profilanswer
 

Ca y est , ma marche !
 
C trop bien, je vous aime !
Je viens de lire mon code et m'apercevoir ke j'avé fait : monReseau.run() au lieu de monReseau.start(), ce ki bien sur compile et s'exécute, mais ne donne pas le résutat voulu.
 
Bon maintenant ke ca se lance en parralèle, je vais essayer que ca fasse ce ke je ve....


Message édité par tuxbleu le 19-05-2004 à 17:10:12
n°731900
gfive
Posté le 19-05-2004 à 18:04:05  profilanswer
 

euuuh....
 
monRéseau, ça implémente Runnable??
 
Si oui, il  faut faire Thread t = new Thread(monReseau);
t.start();
 
sinon, y'a pas de nouvelle thread.

n°731914
tuxbleu
renie ses origines
Posté le 19-05-2004 à 18:17:59  profilanswer
 

gfive a écrit :

euuuh....
 
monRéseau, ça implémente Runnable??
 
Si oui, il  faut faire Thread t = new Thread(monReseau);
t.start();
 
sinon, y'a pas de nouvelle thread.


 
monReseau, ca extends Thread. no souci, sa fonctionne

n°731916
tuxbleu
renie ses origines
Posté le 19-05-2004 à 18:18:10  profilanswer
 

:)

n°734214
tuxbleu
renie ses origines
Posté le 21-05-2004 à 19:28:24  profilanswer
 

Les communications passent bien en tre mon controleur de dialogue et mon Thread reseau, et inversement, donc tout va bien.  
:)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] Comment laisser tourner une méthode en arrière plan ?

 

Sujets relatifs
[JAVA] problème de lecture de fichier[java] Probleme incomprehensible avec JDOM (long mais help please:'()
[Java] Pb avec l'API 1.4 de Logging - pb de Handler par défaut[java] détruire un objet
[java] comment recupérer une page html online dans une application ?Console java dans un applet
pb dimensionnement de composant en javarécupérer une methode PHP 5
Bitos Java [applet - Php]Impression Avec Java
Plus de sujets relatifs à : [JAVA] Comment laisser tourner une méthode en arrière plan ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR