[java] question sur les threads

question sur les threads [java] - Java - Programmation

Marsh Posté le 08-12-2002 à 00:24:35    

le pb est décrit dans mon 2eme post... :D


Message édité par tonton sonic le 08-12-2002 à 21:39:51

---------------
Et?
Reply

Marsh Posté le 08-12-2002 à 00:24:35   

Reply

Marsh Posté le 08-12-2002 à 19:40:25    

C pas une question de sollicitation du CPU, ça!! Essaie juste de faire la conversion de ton fichier dans un autre thread : le thread principal pourra s'occuper de l'affichage pendant ce temps!

Reply

Marsh Posté le 08-12-2002 à 21:38:33    

gfive a écrit :

C pas une question de sollicitation du CPU, ça!! Essaie juste de faire la conversion de ton fichier dans un autre thread : le thread principal pourra s'occuper de l'affichage pendant ce temps!


ok g transformé mon truc en thread, ca marche nickel
le pb ce que je suis obligé de créer un objet pour lancer mon thread, alors qu'en fait j'utilise juste une méthode déclarée statique, et créer un objet ca fait pas propre.
alors question : comment on fait pour lancer un thread sans avoir a créer d'objet. pour l'instant g ca :
Thread convertThread = new Thread(new BDDEmlToTxt(filtre.getSpamDir(),filtre.getBDDSpamDir(),filtre));
convertThread.start();
on peut pas lancer un thread qui lancera juste une méthode statique?


Message édité par tonton sonic le 08-12-2002 à 21:39:09

---------------
Et?
Reply

Marsh Posté le 08-12-2002 à 23:06:02    

ToNToN SoNiC a écrit :


ok g transformé mon truc en thread, ca marche nickel
le pb ce que je suis obligé de créer un objet pour lancer mon thread, alors qu'en fait j'utilise juste une méthode déclarée statique, et créer un objet ca fait pas propre.
alors question : comment on fait pour lancer un thread sans avoir a créer d'objet. pour l'instant g ca :
Thread convertThread = new Thread(new BDDEmlToTxt(filtre.getSpamDir(),filtre.getBDDSpamDir(),filtre));
convertThread.start();
on peut pas lancer un thread qui lancera juste une méthode statique?


 
Comprends pas...
Tu peux toujours implémenter l'interface Runnable et rediriger run vers ta fonction statique (!)


---------------
Horizon pas Net, reste à la buvette!!
Reply

Marsh Posté le 08-12-2002 à 23:07:56    

beh c'est ce que je fais
mais dans ma ligne :
Thread convertThread = new Thread(new BDDEmlToTxt(filtre.getSpamDir(),filtre.getBDDSpamDir(),filtre));  
 
je met quoi alors pour ne pas avoir a creer d'objet BBDEmlToTxt?


Message édité par tonton sonic le 09-12-2002 à 01:00:37

---------------
Et?
Reply

Marsh Posté le 09-12-2002 à 08:51:32    

bah......Tu fais un vrai truc propre : tu fais une classe Runnable, qui fait ta conversion, au lieu de la faire dans une méthode statique! :D

Reply

Marsh Posté le 09-12-2002 à 12:39:52    

[:serial coder]


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

Marsh Posté le 09-12-2002 à 14:31:00    

Hein?? Keskia, Dark??

Reply

Marsh Posté le 09-12-2002 à 15:09:35    

Je pense qu'il ne comprend pas la question de base lui aussi :)


---------------
Horizon pas Net, reste à la buvette!!
Reply

Marsh Posté le 09-12-2002 à 15:13:11    

gfive a écrit :

Hein?? Keskia, Dark??


 
bin il veut faire un thread sans créer d'objet ... Iléfou !!


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

Marsh Posté le 09-12-2002 à 15:13:11   

Reply

Marsh Posté le 09-12-2002 à 15:18:06    

simple :
tu installes jython (une implémentation java de python), pis tu fais :
 

Code :
  1. import thread
  2. thread.start_new_thread(fonction, (parm1, parm2, ..))


 
indice : ce n'est pas une bonne idée, et ca utilisera certainement un bon paquet d'objets derriere ton dos

Reply

Marsh Posté le 09-12-2002 à 15:23:01    

lorill a écrit :

simple :
tu installes jython (une implémentation java de python), pis tu fais :
 

Code :
  1. import thread
  2. thread.start_new_thread(fonction, (parm1, parm2, ..))


 
indice : ce n'est pas une bonne idée, et ca utilisera certainement un bon paquet d'objets derriere ton dos


 
oui bin c'est ca que je voulais dire hein  :sarcastic:


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

Marsh Posté le 09-12-2002 à 15:23:57    

DarkLord a écrit :


oui bin c'est ca que je voulais dire hein  :sarcastic:  


hu ?
tu voulais lui dire d'utiliser jython :??:
 
et puis si on a plus le droit de répondre des conneries en faisant un peu de pub au passage :na:

Reply

Marsh Posté le 09-12-2002 à 15:24:54    

Ah, je croyais que j'avais dit une bêtise! :p

Reply

Marsh Posté le 09-12-2002 à 15:29:14    

lorill a écrit :


hu ?
tu voulais lui dire d'utiliser jython :??:
 
et puis si on a plus le droit de répondre des conneries en faisant un peu de pub au passage :na:


 
non que y a toujours moyen de contourner avec la déclaration de l'objet direct ou autre mais que ca va quand meme au finish utiliser des objets dans ton dos ... Que ce soit jython ou pas ... Et sinon tu peux faire toutes les pubs que tu veux hein, du moment que c'est pas pour developpez.com :D


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

Marsh Posté le 09-12-2002 à 15:31:55    

DarkLord a écrit :


du moment que c'est pas pour developpez.com :D


je viens de vérifier, y'a pas de section python, ni ruby, donc y'a peu de risques  :whistle:

Reply

Marsh Posté le 09-12-2002 à 15:40:04    

lorill a écrit :


je viens de vérifier, y'a pas de section python, ni ruby, donc y'a peu de risques  :whistle:  


 
ah bon?  :whistle:


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

Marsh Posté le 09-12-2002 à 16:13:14    

oki oki stop the fight  :)  
g refait un truc propre, qui marche donc c bon j'y toucherais plus  :p  
 
merci kan meme  :hello:


---------------
Et?
Reply

Marsh Posté le 09-12-2002 à 16:14:31    

ToNToN SoNiC a écrit :

oki oki stop the fight  :)  
g refait un truc propre, qui marche donc c bon j'y toucherais plus  :p  
 
merci kan meme  :hello:  


 
qui se fight ici :??:


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

Marsh Posté le 09-12-2002 à 16:18:04    

DarkLord a écrit :


 
qui se fight ici :??:


 
les trucs avec jython et cie... spa encore de mon nivo je crois :D


---------------
Et?
Reply

Marsh Posté le 09-12-2002 à 16:19:02    

ToNToN SoNiC a écrit :


les trucs avec jython et cie... spa encore de mon nivo je crois :D


c'était juste une connerie :o

Reply

Marsh Posté le 09-12-2002 à 16:23:51    

lorill a écrit :


c'était juste une connerie :o


bon ca va alors  :)  
sinon dernière petite question tant que je vous tiens :
c quoi la classe permettant l'acces le plus rapide à un fichier de caractere. pour l'instant j'utilise BufferedReader (FileReader)
en fait g un mot, je veux le comparer a une liste de mot contenu dans un fichier texte. les mots sont séparés par \n
pour l'instant j'utilise ca et je fais readline mais c loooooooooooonnnnng
y'a rien de plus rapide ? (meme si c plus bourrin)


---------------
Et?
Reply

Marsh Posté le 09-12-2002 à 16:28:39    

lire le fichier une seule fois et garder les données en mémoire  [:sinclaire]

Reply

Marsh Posté le 09-12-2002 à 16:32:10    

oui mais en faisant readline je le lit qu'une seule fois?


---------------
Et?
Reply

Marsh Posté le 09-12-2002 à 16:40:02    

ToNToN SoNiC a écrit :

oui mais en faisant readline je le lit qu'une seule fois?
 


 
ouais mais t'es pas obligé de t'arreter à chaque mot ... Lire ton fichier en un passe et puis le traiter en mémoire c'est vachement plus efficace que de lire un peu, traiter, lire un peu, traiter, ...
 
Enfin faut pas que ton fichier soit trop gros non plus hein. Pas 56Mo hein el_gringo ?! :D


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

Marsh Posté le 09-12-2002 à 16:49:50    

non non
juste un fichier de 4ko :D
le probleme c que g environ 60 fichiers à traiter, donc ca devient vite tres lourd
donc tout lire en une passe, mettre ca dans un String[], ca serait plus efficace?
 
mais pour le lire en une passe, readline kan meme? :p


---------------
Et?
Reply

Marsh Posté le 09-12-2002 à 16:55:08    

ToNToN SoNiC a écrit :


mais pour le lire en une passe, readline kan meme? :p


 
bin non ... lire avec un buffer de 1024Ko par exemple ca peut le faire ...


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

Marsh Posté le 09-12-2002 à 17:04:51    

ok ok ok  
mmm moi je veux bien...
donc la je lis plus des strings, mais carrement de la donnée brut
que apres je retransforme en mot...
 
arf...
 :sweat:
 
EDIT : y'a marqué ca sur java.sun.com :
 
In general, each read request made of a Reader causes a corresponding read request to be made of the underlying character or byte stream. It is therefore advisable to wrap a BufferedReader around any Reader whose read() operations may be costly, such as FileReaders and InputStreamReaders. For example,  
 BufferedReader in
   = new BufferedReader(new FileReader("foo.in" ));
 will buffer the input from the specified file. Without buffering, each invocation of read() or readLine() could cause bytes to be read from the file, converted into characters, and then returned, which can be very inefficient.  
 
 
 
ca veut bien dire que des qu'on ouvre le fichier, il le bufferise avec la taille de buffer par défaut, et apres readline() lit sur le buffer?
donc c déja en memoire non?


Message édité par tonton sonic le 09-12-2002 à 17:13:07

---------------
Et?
Reply

Marsh Posté le 09-12-2002 à 17:22:05    

yeah!
grace a vous g trouvé mon erreur!
trop long a vous expliquer mais merci kan meme !!
g gagné 90% de temps d'execution strop fort!!
 
DANKE THANKS MERCI! :jap:  :jap:  :jap:


---------------
Et?
Reply

Marsh Posté le 09-12-2002 à 17:28:04    

ToNToN SoNiC a écrit :

yeah!
grace a vous g trouvé mon erreur!
trop long a vous expliquer mais merci kan meme !!
g gagné 90% de temps d'execution strop fort!!
 
DANKE THANKS MERCI! :jap:  :jap:  :jap:  


 
bin explique alors ... Que ca serve aux autres qd meme ...


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

Marsh Posté le 09-12-2002 à 17:37:39    

DarkLord a écrit :


 
bin explique alors ... Que ca serve aux autres qd meme ...


bon ok
alors en gros ce que je devais faire, c'est comparer chaque mot d'un mail .eml a plusieurs fichiers d'une base de données
 
donc ca devient vite tres lourd, surtout quand tu as 200 mails a traiter.
mon raisonnement :
- tu prends un mot du mail
- tu le compare a chaque mot de chaque fichier de la base de données
- tu passe à un autre mot
 
mon erreur c'était de créer un new BufferedReader(new FileReader("fichier de la bdd" ));
a chaque fois que je passais dans ma boucle de comparaison de mot
donc en fait :
je prends un mot
 
je prends le 1er fichier de la base de données
j'ouvre un bufferedReader
je compare avec tout les mots du fichier
je ferme mon bufferedReader
 
je prends le 2eme fichier de la base de données
j'ouvre un bufferedReader
je compare avec tout les mots du fichier
je ferme mon bufferedReader
...
.
 
 
je prends le deuxieme mot
et rebellote
 
alors forcement l'interet du buffer est TRES LIMITE
donc g fait un tableau de BufferedReader
j'ouvre une fois tout mes bufferedReader avec tout mes fichiers
je fais mes comparaisons
et je ferme tout
résultat --> au lieu de 30 seconde pour traiter un mail, il me prends 1/2 seconde!!!
B O N H E U R
 
donc merci a vous cos vous m'avez bien aiguiller avec vos histoires de buffers
donc re-DANKE  :jap:  


---------------
Et?
Reply

Marsh Posté le 09-12-2002 à 19:57:34    

j'ai pas tout lu, mais tu parles d'essayer de rendre la lectture plus performante avec un BufferedReader. Tu peux par exemple fixer la taille du buffer : public BufferedReader(Reader in, int sz). en mettant un size bienn grosse (10000), il lira ton ficher par gros bloc, donc sans changer ton algo (while(readLine)) ca optimize déjà bien ...

Reply

Marsh Posté le 09-12-2002 à 20:02:11    

benou a écrit :

j'ai pas tout lu, mais tu parles d'essayer de rendre la lectture plus performante avec un BufferedReader. Tu peux par exemple fixer la taille du buffer : public BufferedReader(Reader in, int sz). en mettant un size bienn grosse (10000), il lira ton ficher par gros bloc, donc sans changer ton algo (while(readLine)) ca optimize déjà bien ...


 
oui j'avais vu ca sur le site java.sun.com, mais bon, la ca va tellement vite que ca ne va pas changer grand chose :p
ca y'est mon proj est fini et marche 10²²² fois mieux qu'avant, donc je suis happy tonight, c glop :D


---------------
Et?
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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