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

 


Dernière réponse
Sujet : [JAVA] Probleme bizarre avec des threads
AirBg Modérateurs, virez moi ce topic svp, il n'est pas résolvable...

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
AirBg Modérateurs, virez moi ce topic svp, il n'est pas résolvable...
AirBg Dernier up puis j'abandonne...
AirBg Un petit up je suis vraiment trop dans la m...  :fou:  :crazy:
AirBg Et bien non j'ai fait pas mal de corrections et cette fois cela ne se lance pas 9 fois mais 2 ... ce n'est à plus rien y comprendre !!! Threads  :gun:
AirBg Ok je vais essayer ca,  
merci de ton aide bat
bat Et le 2eme appel à "Display", il exécute 9 fois la meme chose ?
Soit ton pb est à une solution conne (assez classique en prog) et super évidente, que je ne vois pas, soit ca ne vient pas des threads mais de ta classe CGI, avec un pb du style limite du nb de connexions ou je sais pas quoi d'autre ...
Je te conseille de rajouter des println() partout pour tracer au maximum ce qui se passe.
Autre idée, au lieu de dériver de la classe Thread, dérive ta classe de l'interface Runnable, il suffit d'implémenter la méthode run() et ca roule ...
Enfin, fait bien gaffe à tes objets et aux réfences qu'il y dessus, pour ne pas appeler le mauvais objet au mauvais moment.
AirBg LEs 2 deux derniers parametres ne sont pas importants et n'interviennent pas.
mais il n'y a pas non plus de fonction/attribut statiques...
 
si je clique plusieurs fois de suite sur Display en premier, aucun probleme ... je capte rien pourtant les threads c pas dur !
bat Est ce qu'il y a des membres statiques dans ta classe CGI ?
A quoi servent les deux derniers parametres du constructeur de la classe CGI ?
Si tu appelles plusieurs fois de suite "Display", ca marche correctement ?
 
Il m'a l'air retorse ton pb ...  :crazy:
AirBg Bon :
 
- clic sur le bouton "Display" appel de la méthode actionPerformed qui crée un Thread CGI.
Cd trhead CGI appelle dans sa fonction run une méthode executeCGI qui utilse une URLCOnnection pour executer un script.
 
- clic sur le bouton "Load" appel de actionPerformed qui lui appelle alors loadTemp()
dans loadTemp() se créeent 9 Thread CGI lancés les uns a la suite des autres (quasi parallelement). Ca c okk
 
- mais quand je reclique sur "Display" il est sensé faire la meme chose qu'au début mais en fait il le fait neuf fois !
Comme si il lançcait 9 thread !  
 
Merci , j'espere plus clair :)
AirBg Bon :
 
- clic sur le bouton "Display" appel de la méthode actionPerformed qui crée un Thread CGI.
Cd trhead CGI appelle dans sa fonction run une méthode executeCGI qui utilse une URLCOnnection pour executer un script.
 
- clic sur le bouton "Load" appel de actionPerformed qui lui appelle alors loadTemp()
dans loadTemp() se créeent 9 Thread CGI lancés les uns a la suite des autres (quasi parallelement). Ca c okk
 
- mais quand je reclique sur "Display" il est sensé faire la meme chose qu'au début mais en fait il le fait neuf fois !
Comme si il lançcait 9 thread !  
 
Merci , j'espere plus clair :)
bat Je pige pas bien ce qui va pas ...
Il faudrait des explications supplémentaires sur ce qui ce passe, un exemple sur le comportement du code genre :
- appel de la fonction truc, il se passe ...  
- appel de ..., il se passe  ...
- etc ...
 
Essaye d'être le plus precis possible, car sans le code complet, c'est dur de voir ce qui va pas.
AirBg Non , aucune boucle, cela réagit a partir de listener(clic sur un bouton)
 
voici un bout de code :
 
public void actionPerformed(ActionEvent ev) {
 
 
                if (ev.getActionCommand().equals("Display" )
                {
                        _progress_bar = 0;
                        repaint();
                        ta.append("Please wait...\n" );
       
                        _cgi = new CGI("http://15.129.22.198/cgi-bin/conf-rcons.sh", ta, this, false, 0);
                        _cgi.start();
                        _progress_bar = 618;
                        repaint();
                 }
                else if (ev.getActionCommand().equals("Ping" )
                {
                        _progress_bar = 0;
                        repaint();
               
                        _cgi = new CGI("http://15.129.22.198/cgi-bin/tftp.sh", ta, this, false, 0);
                        _cgi.start();
                        _progress_bar = 618;
                        repaint();
                }
 
 
                else if (ev.getActionCommand().equals("Load" ))
                {
                        _progress_bar = 0;
                        repaint();
                        loadTemp();
                }
        }
 
ensuite dans la fct° loadTemp j'utilise mon tableau
 
 ta.append("Loading configuration into R1 Router...\n" );
                _cgis[0] = new CGI("http://15.129.22.198/cgi-bin/conf.sh?15.129.22.201+template-r1-confg+R1", ta, this, true, 1);
                _cgis[0].start();
 
                ta.append("Loading configuration into R2 Router...\n" );
                _cgis[1] = new CGI("http://15.129.22.198/cgi-bin/conf.sh?15.129.22.202+template-r2-confg+R2", ta, this, true, 2);
                _cgis[1].start();
 
                ta.append("Loading configuration into R3 Router ...\n" );
                _cgis[2] = new CGI("http://15.129.22.198/cgi-bin/conf.sh?15.129.22.203+template-r3-confg+R3", ta, this, true, 3);
                _cgis[2].start();
 
                ta.append("Loading configuration into R4 Router...\n" );
                _cgis[3] = new CGI("http://15.129.22.198/cgi-bin/conf.sh?15.129.22.204+template-r4-confg+R4", ta, this, true, 4);
                _cgis[3].start();
 
 
(je mets pas tout car ca se ressemble) ...
j'espere que c pas trop ambigu)
zop Y'a peut-être une boucle qui traîne ...
 
Ce serait certainement plus facile si on pouvait voir le code
AirBg Voila j'ai créé une classe qui hérite de Thread et qui fait diffférents traitements.
 
Dans une autre classe j'ai comme attributs un tableau de cette classe :
 
MonThread []tabthread;
 
et un déclaré seul
 
MonThread th;
 
le tableau c'est pour pouvoir en lancer plusieurs en parallèle (9 exactement)
une fois ces 9 threads morts, quand je veux faire un start() du thread unique (th.start()) il se lance 9 fois !!!!
 
Qui pourrait m'aider pour ca ? je comprends pas !  
C'est extremement urgent en +
Merci d'avance !

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)