[Java] utilisation de thread

utilisation de thread [Java] - Java - Programmation

Marsh Posté le 21-06-2002 à 09:04:07    

Je veux faire un appli chargée de tester les performances de ma servlet en local. L'appli sera totalement indépendante de ma servlet, puisqu'elle pourra de la même façon tester les performances d'un module ISAPI.
Cette appli sevira en fait à comparer les temps de réponse des 2 technologies par rapport au nombre de requêtes simultannées. Je pensais créer une petite appli à laquelle on donnnerai une ligne de commande (une action à effectuer par la servlet ou le module ISAPI), et qui lancerai autant de fois ie avec cette ligne de commande qu'on le veut.
Si vous avez mieux comme idée déja, je suis prenneur.
Je voudrais afficher en temps réel des infos sur les temps de réponse, du coup g 2 problèmes là:
 - Quels infos je peux afficher, et comment ?
 - Pour afficher des infos en temps réel, j'imagine que je dois utiliser un thread. du coup g crée une classe qui étend Thread. J'implémenterai la méthode run () de façon à ce que ça soit une boucle infine qui écrive les infos récoltées dans ma frame principale. Ms g un pb: je sais pas comment stopper mon thread, la méthode stop () est deprecated, et j'arrive pas à comprendre les infos concernant la méthode de remplacement ds la javadoc. Donc, forécment, je compte un peu sur qqn ici.
Merci... :hello:

Reply

Marsh Posté le 21-06-2002 à 09:04:07   

Reply

Marsh Posté le 21-06-2002 à 09:10:11    

C'est tout con : tu crée une variable de classe, genre un boolean, que tu fais changer d'etat quand ton traitement est fini. Le thread doit s'arreter des que le boolean change de valeur.
Ta boucle infinie devient while(!fini). Dans ta classe principale, quand ton traitement est terminé tu fais maThread.fini = true;
Enfin moi c'est comme ca que j'ai interprété ce qui est dit dans la doc.


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 21-06-2002 à 09:11:23    

bah, en fait, dans ta classe, tu ajoutes un atribut :
 
boolean alive;
 
et dans ton run(), tu fais :  
 
public void run() {
       while (alive) {
          ....
       }
}
 
Comme ça, pour stopper ta thread, tu met juste alive a false.
 
Ouala.
 
(tu peux le mettre synchronized, aussi, le booléen)

Reply

Marsh Posté le 21-06-2002 à 09:16:47    

Faut reconnaitre, gfive explique mieux que moi


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 21-06-2002 à 09:20:12    

gfive a écrit a écrit :

bah, en fait, dans ta classe, tu ajoutes un atribut :
 
boolean alive;
 
et dans ton run(), tu fais :  
 
public void run() {
       while (alive) {
          ....
       }
}
 
Comme ça, pour stopper ta thread, tu met juste alive a false.
 
Ouala.
 
(tu peux le mettre synchronized, aussi, le booléen)  




 
ça veut dire que dès que la méthode run se termine, le thread se termine ?
Et ben, on dirait pas, parce que g déja fait ce que vous dites, mais si après avoir terminé mon Thread de cette façon, je refais un start sur la même instance de ma classe étendant Thread, ben elle repasse pas par ma méthode run...
Et pour les infos que je peux récupérer pour le noyeau de mon appli de test, vous avez pas d'idée ?

Reply

Marsh Posté le 21-06-2002 à 09:20:31    

Ouais, mais grilled quand même, bouhou!

Reply

Marsh Posté le 21-06-2002 à 09:29:18    

En fait j'ai jamais essayé de refaire un start() sur une thread terminée, alors je sais pas trop, mais ca me semble bizarre. Par contre, quand run() se termine, la thread est finie, ca c'est sur !
Pour les infos, la desolé, mais j'ai pas d'idée :(


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 21-06-2002 à 09:52:07    

Et personne à d'idée alors sur mes 2 pbs subsistants:
 - pourquoi, quand je fais start une 2e fois sur un objet étendant Thread, alors que la méthode run() est terminée (Thread détruit !?), la méthode run() n'est pas appelée ?
 - comment récupérer des infos pour remplir la fonctionnalité que je décris dans mon 1er post ?

Reply

Marsh Posté le 21-06-2002 à 10:09:55    

réponse 1 - Un thread a une vie et une seule vie par instance. Une fois que tu appelles start() la méthode run est appellée et lorqsu'elle se termine l'instance du thread meurt. Si tu veux rappeller start sur le meme objet tu dois recréer une instace de ton objet.
 
réponse 2 - j'ai la flemme de lire ton premier post :D


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 21-06-2002 à 10:10:54    

Un poil tard mais : http://java.sun.com/docs/books/tut [...] cycle.html


Message édité par R3g le 21-06-2002 à 10:11:15

---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 21-06-2002 à 10:10:54   

Reply

Marsh Posté le 21-06-2002 à 10:12:51    

y'a des applis de tests de charge pour serveur d'app (donc de servlets...) .. sur sourceforge je crois, me rappelle plus le nom comme ça.
apres si tu veux que ta servlet sorte des infos specifiques à certains moments--> log4j rulez
 
bon j'ai rien compris, c ça?

Reply

Marsh Posté le 21-06-2002 à 10:17:04    

--greg-- a écrit a écrit :

y'a des applis de tests de charge pour serveur d'app (donc de servlets...) .. sur sourceforge je crois, me rappelle plus le nom comme ça.
apres si tu veux que ta servlet sorte des infos specifiques à certains moments--> log4j rulez
 
bon j'ai rien compris, c ça?  




 
Nan, c bon, ce que tu m'as dit c exactement ce dont g besoin. c écrit en Java en plus ce truc !?
Sérieux, t'arrives vraiement pas à te rappeler le nom ?

Reply

Marsh Posté le 21-06-2002 à 10:18:08    

el_gringo a écrit a écrit :

 
 
Nan, c bon, ce que tu m'as dit c exactement ce dont g besoin. c écrit en Java en plus ce truc !?
Sérieux, t'arrives vraiement pas à te rappeler le nom ?  



bon allez je vais faire un effort
mais c bien pour faire enrager les autres qui ont essayé de t'expliquer les threads pour rien :-))))))))

Reply

Marsh Posté le 21-06-2002 à 10:21:12    

--greg-- a écrit a écrit :

bon allez je vais faire un effort
mais c bien pour faire enrager les autres qui ont essayé de t'expliquer les threads pour rien :-))))))))  




 
allons, allons, c jammais expliqué pr rien, ça servira une autre fois...
tu crois que tu vas retrouver ?

Reply

Marsh Posté le 21-06-2002 à 10:25:21    

--greg-- a écrit a écrit :

y'a des applis de tests de charge pour serveur d'app (donc de servlets...) .. sur sourceforge je crois, me rappelle plus le nom comme ça.
apres si tu veux que ta servlet sorte des infos specifiques à certains moments--> log4j rulez
 
bon j'ai rien compris, c ça?  




 
ha, mais attend, test de charge, c'est quoi !? c pas tests de performances en fait...
test de charge, c pour voir si l'appli "travaille" beaucoup, c ça !?

Reply

Marsh Posté le 21-06-2002 à 10:29:56    

euh ouais c pour voir comment ça reagit qd la charge (le nbre de requetes par ex) monte
 
mais bon
par extension ça teste les performances non?
 
bref je t'ai trouvé qques urls
 
http://www.codework.com/pureload/
http://www.velometer.com/
http://jakarta.apache.org/jmeter/index.html <-- c a celle que je pensais mais bon j'ai jamais essayé le machin
http://sourceforge.net/projects/grinder/
 
si tu en essaies, donne moi des nvlles ça m'interesse!

Reply

Marsh Posté le 21-06-2002 à 11:14:50    

cool, merci. J'vais essayer tout ça...

Reply

Marsh Posté le 21-06-2002 à 16:02:39    

--greg-- a écrit a écrit :

euh ouais c pour voir comment ça reagit qd la charge (le nbre de requetes par ex) monte
 
mais bon
par extension ça teste les performances non?
 
bref je t'ai trouvé qques urls
 
http://www.codework.com/pureload/
http://www.velometer.com/
http://jakarta.apache.org/jmeter/index.html <-- c a celle que je pensais mais bon j'ai jamais essayé le machin
http://sourceforge.net/projects/grinder/
 
si tu en essaies, donne moi des nvlles ça m'interesse!  




 
pureload --> pas dispo en téléchargement apparement
velometer--> tout simple d'utilisation. Trop, il en est    incomplet et faussé
jmeter --> à l'air carrément bien. complexe, je comprend encore pas grand chose, ms j'pense que c pour lui que je vais opter.
grinder --> pas essayé

Reply

Marsh Posté le 21-06-2002 à 16:02:52    

...merci encore pr les URL. :hello:

Reply

Marsh Posté le 21-06-2002 à 16:04:55    

el_gringo a écrit a écrit :

...merci encore pr les URL. :hello:  




de rien :)
tu me diras ce que ça donne jmeter alors une fois que t'auras bien essayé? :))

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed