Gestion des Thread -> HELP !!!

Gestion des Thread -> HELP !!! - Java - Programmation

Marsh Posté le 13-06-2003 à 20:54:01    

Salut!
 
voilà un petit soucis que je pense vous pouvez régler :
 
2 classes :
    - 1 classe (A) qui herite de JFrame et qui me sert d'interface graphique
    - 1 classe (B) qui hérite de Thread et qui fait des trucs compliqués qui prennent du temps.
 
Voilà, sur l'interface, ya un bouton qui lance le processus de la classe B. Dans la méthode run de la classe B, ya un "while(true)".
 
Pb : quand je clique sur le bouton ben l'interface se fige car le thread prend toutes les ressources.
 
Ma question : comment lancer le thread (classe B) en tache de fond pour que le traitement du thread ne bloque par l'interface??
 
D'avance merci

Reply

Marsh Posté le 13-06-2003 à 20:54:01   

Reply

Marsh Posté le 14-06-2003 à 01:06:24    

setPriority dans la classe Thread

Reply

Marsh Posté le 14-06-2003 à 01:38:49    

Ok mais JFrame est assimilé à un Thread?
Sinon je ne pourrais pas lui affecter une priorité si?

Reply

Marsh Posté le 14-06-2003 à 02:45:16    

joujou_cs a écrit :

Ok mais JFrame est assimilé à un Thread?
Sinon je ne pourrais pas lui affecter une priorité si?


 
diminue la propriété de ton thread de calcul. c'est mieux que d'essayer d'augmenter la priorité de ton interface

Reply

Marsh Posté le 15-06-2003 à 11:37:13    

joujou_cs a écrit :


Ma question : comment lancer le thread (classe B) en tache de fond pour que le traitement du thread ne bloque par l'interface??
D'avance merci  


T'es sous Quel OS ?
 
je me souviens que j'avais rencontré la même chose sous Solaris y a longtemps ...
 
La solution est de faire quelques Thread.yield() ou Thread.sleep() dans ton Thread qui est fortement concomateur de ressource : ca le force à rendre la main aux autres threads


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 15-06-2003 à 17:37:19    

Je connais pas Java, mais personnellement je fais l'équivalent d'un Thread.Sleep(10) quand mes threads monopolisent le processeur.


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 15-06-2003 à 21:51:40    

Thread.yield() rend la main
Thread.sleep(time) rend la main et attend time millisecondes avant de la reprendre


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 15-06-2003 à 23:28:14    

salut les gars!
ben justement j'ai essayé le yield et le sleep.
le programme attends bien X secondes mais ne rend pas la main.
Je suis sous Win 2000

Reply

Marsh Posté le 15-06-2003 à 23:58:18    

T'es sûr que tu le lances correctement ton thread ?
 
t'apellerais pas directement la méthode run() ?


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 16-06-2003 à 23:09:09    

salut.
Non, je l'appelle avec .start()

Reply

Marsh Posté le 16-06-2003 à 23:09:09   

Reply

Marsh Posté le 16-06-2003 à 23:33:37    

montre ton code parce que là ma boule de cristal veut plus rien me montrer ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Sujets relatifs:

Leave a Replay

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