Logo du forum
 

Forum TT-Hardware

| Inscription | | Recherche | | FAQ | | Accueil | | Liste des membres |
| Calendrier |
 
Vous n'êtes pas identifié! [Connexion] ou [Inscription] Forum » Programmation » [Java] » Manipulation de threads
Login Mot de passe

1 visiteurs sur ce topic (0 membre(s), 1 invité(s) )


Auteur
Sujet : Manipulation de threads
Sarsipius
Vétéran
Membre # 15109

 Avatar du membre
Lieu : Nancy [54]

Messages :
2001 (1.26 par jour)


Score :

Message du 22-08-2007 @ 14:37   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   


Salut tout le monde

Jusque maintenant je développais une application qui était exécutée de façon séquentielle mais puisque maintenant des processeurs à 2 ou 4 cores à tous les coins de rue je l'ai modifiée pour qu'elle fonctionne en multi-thread

Je suis étonné d'avoir finalement mis si peu de temps pour y arriver puisque je n'avais que quelques bases donc je suis bien content :D

Je bloque juste sur un petit truc : je lance mes x threads qui fonctionnent en parallèle et en théorie j'aimerais qu'à la fin de leurs exécutions je récupère leurs résultats et je les compile

Le problème que j'ai c'est que ma seconde partie de l'application démarre avant la fin des threads

J'ai ajouté ce code avant la seconde partie :

Code :


boolean terminated = false;

while(!terminated)
{
   // pour chaque thread
   for(int i=0;i<listThread.length;i++)
   {
      // si le thread est encore actif
      if(listThread[i].isAlive())
      {
         terminated = false;
         break;
      }
      else
      {
         terminated = true;
      }
   }
}



mais ça n'y change rien

Est-ce qu'il existerait une façon élégante de palier à ce problème ?

Merci :)

[message édité le 22-08-2007 @ 14:37 Par Sarsipius]
----------
HP 8510p | Apple Powerbook 12" Rev. D | Apple Wireless Keyboard v2 | Logitech MX Revolution | Func Surface 1030 | Dell 2407WFP
- Haut de page -
Flymann TTH
Vétéran
Membre # 11665

 Avatar du membre
Lieu : Dax / Rodez

Messages :
3400 (1.87 par jour)


Score :

Message du 22-08-2007 @ 15:18   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   


J'aurais sur le faire en C, mais pas en Java.

J'dirais que ce qui serait sympa c'est d'intercepter le signal de fin de thread (celui que tu attend pour les résultats) et de lancer à ce moment là la fin des calculs.

Pas forcement évident de rendre une application séquentielle multithread, puisque justement, tu attend la fin de certains calculs pour lancer le reste, du coup le multi thread sert pas à grand chose :p (enfin sur ce point là)

----------
4200+@2800Mhz + 1A-HV3 + Kit 1A, DFI NF4 UltraD + Nexxos nb-sli, 2*1Go G-Skill PC4000
MSI 7900GTO@GTX + HK GPU-X, Alim Seasonic S12 600W, Antec SuperLan Boy
DD Maxtor 2*300Go RAID 0 + DD Maxtor 120Go + DD Maxtor 160Go + DD Maxtor 20Go,
Panasonic CF-T4 - 12" P-m 1.2 ULV - 915GM - 40Go - 12H d'autonomie

Pentax K10D + Sigma 18-50 F2.8 DC EX MACRO + Pentax FA 50 F1.4 + Mitsuki 400mm F5.6 + Tamron 70-300 F4-5.6 Macro
- Haut de page -
Sarsipius
Vétéran
Membre # 15109

 Avatar du membre
Lieu : Nancy [54]

Messages :
2001 (1.26 par jour)


Score :

Message du 22-08-2007 @ 15:23   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

je peux te dire que le multi-thread pour l'appli que je développe est super important même si j'attends effectivement la fin du pool de thread pour finir

je crois que je vais ajouter un truc producteur/consommateur et du coup ça sera threadé du début à la fin :p
----------
HP 8510p | Apple Powerbook 12" Rev. D | Apple Wireless Keyboard v2 | Logitech MX Revolution | Func Surface 1030 | Dell 2407WFP
- Haut de page -
zero_cool
Master
Membre # 14362

 Avatar du membre
Lieu : Belgium

Messages :
932 (0.57 par jour)


Score :

Message du 20-09-2007 @ 14:59   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

la JVM est multithreadée???

savais pas... perso je fais toujours des applis avec RMI qui s'éxécutent sur 2 JVM séparés et eventuellement sur 2 pc différents...
----------
DESKTOP1: P4C 3200HT, 2Gb DDR,Radeon 9800pro 128Mb (Club3D), Maxtor 2*120@7200+8mbCache, GigalanDlink, Wifi Dlink DWL-G520, Firewire, DVDRW+-DL Pioneer 108, AOPEN CDRW1610A, son:ampli Luxman L5 baffles BW et Tannoy Mercury M2.5, 19'TFT.
Laptop: ASUS V6J T2500@2Ghz, 2Gb DDR2, 120Gb HDD, DVD+/-RW, 15' 1400*1050Bright
GSM: SE-P990i APN: Sony DSC-F717
- Haut de page -
Icy
Administrateur
Membre # 871

 Avatar du membre
Lieu : Bxl

Messages :
16699 (5.78 par jour)


Score :

Message du 20-09-2007 @ 15:25   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

joli up, j'avais loupé le tread topic :D
oui la jvm va automatiquement distribué les thread sur les cpu/core. Evidcmeent elle ne peut pas connaitre le poids(demande cpu) d'une thread au moment de son attribution:o

Par contre pour le pbm(meme si depuis il doit etre résolu), pense au mot clef syncronized ;)
----------
"May He touch you with His Noodly Appendage"
- Haut de page -
chip
Master
Membre # 9417

 


Messages :
375 (0.19 par jour)


Voter pour ce membre

Message du 06-10-2007 @ 3:55   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Bonsoir,

Sarsipius a écrit


mais ça n'y change rien



Concretement, il se passe quoi ? Comment sais-tu que tes threads ne sont pas finis (d'ailleurs !alive == fini ??)
Le problème ne vient t-il pas d'ailleurs ?

Sarsipius a écrit


Est-ce qu'il existerait une façon élégante de palier à ce problème ?



boucle passive avec utilisation de wait et de notify

chip
----------
TravelMate 800 LCi
- Haut de page -


Aller dans le forum :  

Plan du forum | Contacter l'administrateur

Powered by SoulBB 3.0.1
© Soulmanto, 2003-2006

Valid XHTML 1.0 Transitional

Page générée en 0.156 secondes