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

  FORUM HardWare.fr
  Programmation
  Java

  [java] question sur les threads

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[java] question sur les threads

n°264578
tonton son​ic
RTFM
Posté le 08-12-2002 à 00:24:35  profilanswer
 

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


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

---------------
Et?
mood
Publicité
Posté le 08-12-2002 à 00:24:35  profilanswer
 

n°264879
gfive
Posté le 08-12-2002 à 19:40:25  profilanswer
 

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!

n°264963
tonton son​ic
RTFM
Posté le 08-12-2002 à 21:38:33  profilanswer
 

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?
n°265019
Willyzekid
Posté le 08-12-2002 à 23:06:02  profilanswer
 

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!!
n°265020
tonton son​ic
RTFM
Posté le 08-12-2002 à 23:07:56  profilanswer
 

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?
n°265066
gfive
Posté le 09-12-2002 à 08:51:32  profilanswer
 

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

n°265267
darklord
You're welcome
Posté le 09-12-2002 à 12:39:52  profilanswer
 

[:serial coder]


---------------
Just because you feel good does not make you right
n°265375
gfive
Posté le 09-12-2002 à 14:31:00  profilanswer
 

Hein?? Keskia, Dark??

n°265459
Willyzekid
Posté le 09-12-2002 à 15:09:35  profilanswer
 

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


---------------
Horizon pas Net, reste à la buvette!!
n°265468
darklord
You're welcome
Posté le 09-12-2002 à 15:13:11  profilanswer
 

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
mood
Publicité
Posté le 09-12-2002 à 15:13:11  profilanswer
 

n°265477
lorill
Posté le 09-12-2002 à 15:18:06  profilanswer
 

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

n°265489
darklord
You're welcome
Posté le 09-12-2002 à 15:23:01  profilanswer
 

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
n°265490
lorill
Posté le 09-12-2002 à 15:23:57  profilanswer
 

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:

n°265491
gfive
Posté le 09-12-2002 à 15:24:54  profilanswer
 

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

n°265495
darklord
You're welcome
Posté le 09-12-2002 à 15:29:14  profilanswer
 

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
n°265498
lorill
Posté le 09-12-2002 à 15:31:55  profilanswer
 

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:

n°265505
darklord
You're welcome
Posté le 09-12-2002 à 15:40:04  profilanswer
 

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
n°265535
tonton son​ic
RTFM
Posté le 09-12-2002 à 16:13:14  profilanswer
 

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?
n°265537
darklord
You're welcome
Posté le 09-12-2002 à 16:14:31  profilanswer
 

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
n°265540
tonton son​ic
RTFM
Posté le 09-12-2002 à 16:18:04  profilanswer
 

DarkLord a écrit :


 
qui se fight ici :??:


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


---------------
Et?
n°265541
lorill
Posté le 09-12-2002 à 16:19:02  profilanswer
 

ToNToN SoNiC a écrit :


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


c'était juste une connerie :o

n°265544
tonton son​ic
RTFM
Posté le 09-12-2002 à 16:23:51  profilanswer
 

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?
n°265550
lorill
Posté le 09-12-2002 à 16:28:39  profilanswer
 

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

n°265554
tonton son​ic
RTFM
Posté le 09-12-2002 à 16:32:10  profilanswer
 

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


---------------
Et?
n°265567
darklord
You're welcome
Posté le 09-12-2002 à 16:40:02  profilanswer
 

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
n°265578
tonton son​ic
RTFM
Posté le 09-12-2002 à 16:49:50  profilanswer
 

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?
n°265594
darklord
You're welcome
Posté le 09-12-2002 à 16:55:08  profilanswer
 

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
n°265625
tonton son​ic
RTFM
Posté le 09-12-2002 à 17:04:51  profilanswer
 

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?
n°265671
tonton son​ic
RTFM
Posté le 09-12-2002 à 17:22:05  profilanswer
 

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?
n°265678
darklord
You're welcome
Posté le 09-12-2002 à 17:28:04  profilanswer
 

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
n°265700
tonton son​ic
RTFM
Posté le 09-12-2002 à 17:37:39  profilanswer
 

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?
n°265907
benou
Posté le 09-12-2002 à 19:57:34  profilanswer
 

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 ...

n°265914
tonton son​ic
RTFM
Posté le 09-12-2002 à 20:02:11  profilanswer
 

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?
mood
Publicité
Posté le   profilanswer
 


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

  [java] question sur les threads

 

Sujets relatifs
Développer un service windows2k en javaQuestion de "multiplateformage"
[php] question d'un plus que debutant[java] C'est quoi un java beans ??
[Java] Pb avec le ClassLoader [Résolu][java] c quoi cette erreur (wrong version 48.0)?
Aide au java plizConvertir un projet Java en applet
[Java] Quelle classe pour stockage données volumineuse[java] question sur les threads
Plus de sujets relatifs à : [java] question sur les threads


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