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

  FORUM HardWare.fr
  Programmation
  Java

  Thread et Process

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Thread et Process

n°1086803
boulax
Inserer phrase hype en anglais
Posté le 17-05-2005 à 15:58:32  profilanswer
 

Hello
J'ai un souci de threads dans mon application...
 
En gros je fais un truc pour savoir si des machines distantes sont en lignes. Il ya une méthode qui lance le test sur toute la liste de machine, sachant que le test peut etre un ping si la machine est reliée au LAN ou un test de connexion RTC si celle-ci est isolée.
 
Donc je lance un test pour chaque machine dans un Thread. Seulement, je n'ai qu'un modem et je ne peux tester qu'une connexion modem à la fois. J'ai donc mis un petit synchronized dans la déclaration de la méthode :
 

Code :
  1. class RTCConnector
  2. {
  3.     private Process p;
  4.     private boolean isConnected;
  5.     public synchronized static boolean testConnect(String phoneNumber)
  6.     {
  7.           boolean result = doConnect(phoneNumber);
  8.           doHangUp();
  9.           return result;
  10.     }
  11.     public synchronized static doHangUp()
  12.     {
  13.           if ( isConnected )
  14.           {
  15.                p.destroy(); // tue le demon, libere le modem
  16.                isConnected = false;
  17.           }
  18.     }
  19.     public synchronized static boolean doConnect(String num)
  20.     {
  21.          // resume
  22.          p = Runtime.getRuntime.exec("pppd ...." );
  23.          // boucle d'attente qui recupere la liste des interfaces reseaux
  24.          // jusqu'a avoir l'inteface "ppp0" ( = connexion ok)
  25.          while ( !detected && attempts < 10 )
  26.          {
  27.              //...........
  28.          }
  29.          isConnected = detected;
  30.          return detected;
  31.     }
  32. }


 
 
Le problème
 
Le premier Thread à etablir une connexion modem fonctionne correctement, les threads suivant sont bien suspendus jusqu'à ce que le premier thread établisse la connexion et libère le modem.  
Mais, lorsque le Thread suivant reprends la main, il ne peut plus etablir de connexion. Le problème se situe au niveau de l'objet Process qui apparemment ne relance pas le démon. Si j'execute les tests les uns apres les autres, cela fonctionne. Y'a-t-il quelque chose qui m'echappe dans les méchanismes d'attente ?


Message édité par boulax le 17-05-2005 à 16:02:12

---------------
Posté depuis des chiottes, sales. Me gusta.
mood
Publicité
Posté le 17-05-2005 à 15:58:32  profilanswer
 

n°1086813
uriel
blood pt.2
Posté le 17-05-2005 à 16:07:22  profilanswer
 

juste un truc, rien a voir avec les thread.
 tu peut pas utiliser java directement au lieu de faire un getRuntime.exe() :??:
 
 y a pas de methode pour ca?


---------------
IVG en france
n°1086823
nraynaud
lol
Posté le 17-05-2005 à 16:12:01  profilanswer
 

c'est quoi l'intérêt d'avoir plusieurs threads si un seul peut être actif à la fois ?
il peut pas n'y en avoir qu'un seul qui irait chercher sont boulkot dans une file de courrier en retard ?


---------------
trainoo.com, c'est fini
n°1086824
boulax
Inserer phrase hype en anglais
Posté le 17-05-2005 à 16:12:18  profilanswer
 

uriel a écrit :

juste un truc, rien a voir avec les thread.
 tu peut pas utiliser java directement au lieu de faire un getRuntime.exe() :??:
 y a pas de methode pour ca?


Bah disons que la partie numérotation, ce serait possible (envoyer les commandes aux modems) mais négocier les parametres de connexion ppp avec la machine distante et creer la nouvelle interface réseau ça me semble plutot chaud brulant :/


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1086831
boulax
Inserer phrase hype en anglais
Posté le 17-05-2005 à 16:14:56  profilanswer
 

nraynaud a écrit :

c'est quoi l'intérêt d'avoir plusieurs threads si un seul peut être actif à la fois ?
il peut pas n'y en avoir qu'un seul qui irait chercher sont boulkot dans une file de courrier en retard ?


A coté de ca, il y a moults thread qui font des pings. Mais en fait je pourrai peut etre gérer ces cas avec des threads et les cas connexion modem dans une boucle séquentielle...


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1086835
nraynaud
lol
Posté le 17-05-2005 à 16:18:14  profilanswer
 

ben tu fais une file de boulot, un tas de thread à bosser [:spamafote]
 
tu peux même configurer le nombre de thread dynamiquement comme ça.


---------------
trainoo.com, c'est fini
n°1086836
boulax
Inserer phrase hype en anglais
Posté le 17-05-2005 à 16:18:48  profilanswer
 

En fait comme solution de secours je pourrai faire:
 
méthode qui teste tout -> thread 1 -> n thread pour n test ping
                       -> thread 2 -> tests sequentielles pour les connexion RTC


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1086838
nraynaud
lol
Posté le 17-05-2005 à 16:20:51  profilanswer
 

oué et puis pas lancer tous les pings en même temps ça serait intelligent aussi [:moule_bite]


---------------
trainoo.com, c'est fini
n°1086864
boulax
Inserer phrase hype en anglais
Posté le 17-05-2005 à 16:42:16  profilanswer
 

nraynaud a écrit :

oué et puis pas lancer tous les pings en même temps ça serait intelligent aussi [:moule_bite]


je vois pas le problème :??:


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1086878
nraynaud
lol
Posté le 17-05-2005 à 16:47:29  profilanswer
 

moi je le vois :o


---------------
trainoo.com, c'est fini
mood
Publicité
Posté le 17-05-2005 à 16:47:29  profilanswer
 

n°1086887
boulax
Inserer phrase hype en anglais
Posté le 17-05-2005 à 16:51:52  profilanswer
 

Y'aura pas 1500 objets a pinger hein :o


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1087547
boulax
Inserer phrase hype en anglais
Posté le 18-05-2005 à 10:45:35  profilanswer
 

CA MARCHE \0/
 
et avec la solution de base, fallait juste attendre un peu apres le kill du démon, le temps de le laisser se remettre (2-3 sec) et c'est bon.


Message édité par boulax le 18-05-2005 à 10:46:22

---------------
Posté depuis des chiottes, sales. Me gusta.

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

  Thread et Process

 

Sujets relatifs
Win32 - parcourir la pile utilisateur d'un threadthread : probleme avec start
Communication avec threadéquivalent Thread.State.WAITING et getState dans la jdk 1.4
thread : tester si en wait[VB] Faire tourner un module dans son propre thread
[C] impossible d'utiliser les thread sous linux problème de linker[C : Thread] Comment faire passer un process en thread+2 autres quest
Définition : thread / Processprocess, thread, sommeil, reveil, communication
Plus de sujets relatifs à : Thread et Process


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