Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : les threads en java [ Divers / Débutant(e) ] (limalima)

jeudi 2 octobre 2008 à 00:42:58 | les threads en java

limalima

Bonsoir,
je débute en java, je suis sur les threads, mon idé est de calculer les carres de i allant de 1 à 10 000,
dites moi si j'ai bien compris:
comme cette opération va prendre du temps, je dois la partager  entre plusieurs threads, chacun va faire une partie.

c'est pour cela que j'ai creé 10 threads.
et la travail à faire je l'ai mis dans la méthode run().

le problème quand j'execute je comprends rien au résultat:par exemple prquoi le résultat de i*i ne commence pas à i=10, i=20...
aussi vu mon code je devrai avoir un résultat de ce genre:

le thred numero 5,dont le nom est:Thread-5est en cours
votre resultat: 79566400
le thred numero 2,dont le nom est:Thread-2est en cours
votre resultat: 79210000

je veux dire que l'affichage soit de cette nature:la premiere ligne :le threads numero.... et la deuxième ligne :votre resultat...


donc prquoi moi j'ai tout  dans le desordre et prquoi ça commence pas par i=10?

voila mon code:

public

class Premier_Thread extends Thread{

intnumero;

public Premier_Thread(int numero) {

this.numero=numero;

// TODO Auto-generated constructor stub

}

publicvoid run(){

for (int i=0;i<10000;i++){

if(i%10==0){

System.

out.println("le thred numero "+numero+","+"dont le nom est:"+this.getName()+"est en cours");

System.

out.println("votre resultat: "+i*i);

}

}}

publicstaticvoid main(String[] args){

for(int j=0;j<10;j++){

Premier_Thread tj=

new Premier_Thread(j);

tj.start();

}

}

}

Merci de me répondre, même si certains trouvrons mon code nul(désolé je debute en programmation).



 







jeudi 2 octobre 2008 à 09:33:25 | Re : les threads en java

coucou747

Réponse acceptée !
salut

i doit varier en fonction du numero du thread.

Le but, c'est de faire calculer des choses differentes a tes 10 threads, or la, ils calculent la meme chose...

jeudi 2 octobre 2008 à 14:06:13 | Re : les threads en java

jojolemariole

Salut,

Qu'entends-tu par "dans le désordre"?

jeudi 2 octobre 2008 à 19:13:46 | Re : les threads en java

limalima

Bonjour,
peut etre j'ai compris:quand j'ai  un resultat de ce type, cela veut il dire que c'est le thread 9 qui a calculé 4 résultat?

le thred numero 9,dont le nom est:Thread-9est en cours

votre resultat: 83174400

votre resultat: 80820100

votre resultat: 81360400

votre resultat: 81902500
merci.


jeudi 2 octobre 2008 à 19:19:28 | Re : les threads en java

limalima

Réponse acceptée !

Bonjour,

ah ok, au fait cela veut dire par exemple les threads prennent aléatoirement une partie du calcul sans s'occuper du fait qu'un autre thread a pris la même chose?, du coup ils peuvent calculer la même chose!


jeudi 2 octobre 2008 à 19:38:30 | Re : les threads en java

coucou747

... la tes threads prennnent TOUS, le calcul ENTIER

vendredi 3 octobre 2008 à 08:23:37 | Re : les threads en java

jojolemariole

Réponse acceptée !
Salut,

Si tu as deux coeurs, et pas trop de logiciels en tâches de fond, tu auras en 2 threads java en cours d'exécution simultanément. De plus, à chaque instruction, et non pas à chaque boucle, le thread utilisant un processeur est susceptible de passer son tour (surtout avec des System.out.print qui sont de (très) très longues instructions.

De plus coucou747 a raison, ce n'est pas parce que tu as crée 10 threads qu'ils vont magiquement se répartir le travail. C'est à toi de coder la répartition des calculs, eh oui : c'est pas magique sinon ça ferait longtemps que Crysis serait optimisé pour les multi-coeurs.

Il existe des patrons de conception (des canvas d'applications en quelque sorte) qui t'aident à faire ça mais il y a plein de façon de le faire seul, à toi de réfléchir. Comme l'a dit coucou747, tu peux par exemple attribuer un nombre sur 10 à chaque thread. Par exemple, le thread 0 fera les carrés de 0, 10, 20, ... le thread 1 les carrés de 1, 11, 21, etc tandis que le thread 9 s'occupera de 9, 19 ,29, ...

Autre chose, quand ce sera fait et que ça marchera tu verras que les calculs seront probablement pas fait dans l'ordre, car les threads n'iront pas exactement à la même vitesse, par exemple 24² pourra être calculé avant 20². Si tu veux que les calculs soient faits dans l'ordre ça va être un peu compliqué il faudra que tu programme un rendez-vous entre les processus -> [ Lien ]

Sinon, le fait d'afficher les réponses dans la console perturbe beaucoup l'exécution (si tu les enlèves, tu verras que le calcul se fait instantanément ou presque)



Cette discussion est classé dans : java, numero, resultat, thread, threads


Répondre à ce message

Sujets en rapport avec ce message

Help! Thread en java! [ par Bidibule ] Salut tout le monde!!Je cherhce de l'aide quant aux threads en Java...Je dois réaliser un thread pour mon programme ms je connais pas gd chose ds les Pour le peu de cheveux qu'il me reste ... [ par colruyt ] /---------------------------\|| ***************** ||********************** ** *Voilà d AAAAAAAAAAAAAAARRRRRRRRRRRRRRGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHH [ par colruyt ] /---------------------------\|| ***************** ||********************** ** */------ questions de java... [ par uttu ] je suis vraiment desesperé.... aidez-moi!! SVP!!!Question 1.a) Comment se passe le multithread sur un ordinateur à un processeur ?b) Quelles sont les questions diverses... [ par uttu ] aidez-moi svp!!!Question 1.a) Comment se passe le multithread sur un ordinateur à un processeur ?b) Quelles sont les deux principales manreres pennett [applet][thread][Socket] Synchroniser 2 threads [ par adanis ] Bonjour,Je suis entrain de réaliser un applet qui lit et envoie un flux de données à un serveur via un socket je veux que mon applet reste tout le VM contre Java2 1.4.1 [ par EvilGost ] j'ai un gros problème. J'ai récupérer une source que j'ai modifié dont le but est d'afficher une image dans une applet.Les postes sur lesquels apparai probleme d'affichage du resultat d'une requete SQL [ par gaga38 ] salut à tous, voila comme l'indique mon titre, j'ai des problemes d'affichage du resultat d'une requete SQL.en effet, j'ai une requete qui dure à peu arreter une serie de thread [ par cuicui ] Bonjour a tous,J'ai creer une serveur attendant des connexions des clients grace à l'objet serverSocket.A chaque nouvelle connexion je lance un thread Java vers Javascript : Pb avec les Thread... [ par mlarrere ] Salut tous,je dois appeler une fonction Javascript depuis Java.Cela marche trés bien lorsque que je réalise cela avec un bouton sur l'Applet.Par contr


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,499 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.