Deux Thread : dont un Thread-Outils [Java/J2ME] - Java - Programmation
MarshPosté le 04-06-2008 à 16:33:38
Bonjour,
Mon application cliente (un Midlet Java Mobile) doit s'identifier auprès d'un serveur (via Internet). Afin de faire ça proprement j'ai "threadé" la partie réseau : j'ai donc un Thread nommé ServerLink qui s'occupe de communiquer avec le serveur.
Imaginons l'exécution suivante : A. Le ServerLink est lancé et mis en veille (wait()). B. L'utilisateur clique sur le bouton "Connecter", là j'appelle le ServerLink qui va se réveiller (notify()) et faire son boulot (demander un truc au serveur via le réseau). C. Lorsque qu'il a obtenu la réponse du serveur (délai variable parce que le réseau n'est jamais fiable), il va appeler une méthode du Midlet (genre networkResponse(String s)) pour refiler le résultat. D. Ce Midlet fera quelque chose de ce résultat (quoi exactement : on s'en fiche).
La question que je me pose c'est : les opérations effectuées par le Midlet en D sont faite dans quel thread ? Celui du ServerLink ou bien celui de l'application ? (Moi j'aimerais que cela soit dans celui de l'application, que le ServerLink puisse retourner se coucher et être prêt pour un autre appel)
Marsh Posté le 04-06-2008 à 16:33:38
Bonjour,
Mon application cliente (un Midlet Java Mobile) doit s'identifier auprès d'un serveur (via Internet).
Afin de faire ça proprement j'ai "threadé" la partie réseau : j'ai donc un Thread nommé ServerLink qui s'occupe de communiquer avec le serveur.
Imaginons l'exécution suivante :
A. Le ServerLink est lancé et mis en veille (wait()).
B. L'utilisateur clique sur le bouton "Connecter", là j'appelle le ServerLink qui va se réveiller (notify()) et faire son boulot (demander un truc au serveur via le réseau).
C. Lorsque qu'il a obtenu la réponse du serveur (délai variable parce que le réseau n'est jamais fiable), il va appeler une méthode du Midlet (genre networkResponse(String s)) pour refiler le résultat.
D. Ce Midlet fera quelque chose de ce résultat (quoi exactement : on s'en fiche).
La question que je me pose c'est : les opérations effectuées par le Midlet en D sont faite dans quel thread ? Celui du ServerLink ou bien celui de l'application ?
(Moi j'aimerais que cela soit dans celui de l'application, que le ServerLink puisse retourner se coucher et être prêt pour un autre appel)
(Pour la conception, je me suis basé sur l'article : http://developers.sun.com/mobility [...] hreading/)