Logo du forum
 

Forum TTH-News

| 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 :
4454 (0.9 par jour)




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

 MacBook Air 13" mid 2011 Core i5, MacBook Air 13" early 2015 Core i5
 iPhone 6 plus 64Go silver, iPad Air 2 64Go grey
 Watch Sport Silver
- Haut de page -
Flymann TTH
Vétéran
Membre # 11665

 Avatar du membre
Lieu : Dax / Rodez

Messages :
4512 (0.87 par jour)


Score :

Message du 22-08-2007 @ 15:18   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à)

----------
Core2Duo E8400 @ 4,25Ghz + 1A-HV3 + Kit 1A, P5Q Pro + 1A nb, 2*2 Go G-skill @473Mhz 4-4-4-12
Sapphire 4870 + EKwaterblocks, Alim Seasonic S12 600W, Antec SuperLan Boy
DD Samsung - 4 x 500 Go RAID 0+5 - RAID 0 : 340Mo/s, 10ms - RAID 5 : 210Mo/s, 15ms
Panasonic CF-T4 - 12" P-m 1.2 ULV - 915GM - 1Go DDR2 - Momentus 5400 160Go ____ 22H d'autonomie avec 2 batteries
Nikon D700 + Nikkor AF-S 24-70mm f/2.8G ED + SB-900
- Haut de page -
Sarsipius
Vétéran
Membre # 15109

 Avatar du membre
Lieu : Nancy [54]

Messages :
4454 (0.9 par jour)




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

 MacBook Air 13" mid 2011 Core i5, MacBook Air 13" early 2015 Core i5
 iPhone 6 plus 64Go silver, iPad Air 2 64Go grey
 Watch Sport Silver
- Haut de page -
zero_cool
Sage
Membre # 14362

 Avatar du membre
Lieu : Belgium

Messages :
1014 (0.2 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: i7-975 extreme, 24GB, Radeon 7950Saphire vapor x OC, Raid 5.
LAPTOP1: Asus G73J, i7 720QM, Radeon 5870mobility, OCZ Vertex 2 240GB, 17' 1920*1200 bright
GSM: LG Optimus one
APN: Pentax K5, Sony DSC-F717
- Haut de page -
icy
Administrateur
Membre # 871

 Avatar du membre
Lieu : Bxl

Messages :
23209 (3.72 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.07 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-2010

Valid XHTML 1.0 Transitional

Page générée en 0.035 secondes