begin process at 2012 02 15 11:24:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Divers

 > 

Débutant(e)

 > 

les threads en java


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

les threads en java

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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
... 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ée dans : java, numero, resultat, thread, threads


Répondre à ce message

Sujets en rapport avec ce message

connexion à mysql avec java [ par calmoust ] Bonjour, J'ai écrit le code suivant pour afficher le contenu d'une table crée dans une BD mysql. Le programme exécuter sous eclipse ne donne pas d'err java threads [ par thiernoirm ] salut j'ai un problème pour arreter mes threads . pouvez vous m'aider ? svp voici mon thread : public class monThread extends Thread{ [BAR]lancer deux threads au meme temps [ par zoya23 ] Bonjour tout le monde! dans une interface graphique, je veux lancer deux threads au meme temps, et chaque thread s'exécute à l'infini et il stope que Ecouteur avec java sous Oracle [ par lion2080 ] Bonjour T.M :J'ai un petit problème consernant Java & Oracle.J'ai un table dans une base de données oracle, je veut lancer un thread java qui fait app java, semaphores, threads [ par electra01 ] g un tp a rendre et g besoin d'aide le theme est :considerons une memoire centrale composee de N segments. Chaque processus peut demander un certain n progressbar [ par crashed ] bonjour, j'utilise des threads dans jbuilder et j'aimerai mettre une progressbar afin de suivre le traitement des threads c'est a dire qu'elle se char synchronisation threads [ par mersai ] bonjour; j'ai 4 threads avec identificateur 1,2,3 et 4, qui sont bloqués sur un objet en utilisant obj.wait(). comment faire pour réveillé un thread semaphore, threads, java [ par mersai ] bonjour, j'ai n threads qui accèdent à un tableau de n boolean (partagé). chaque case de ce tableau correspond à un thread, cad : thread 1 correspond Les threads Java [ par castorr ] J'ai un problème : je lance un thread, il compte et arrivé  à une certaine valeur il effectue une action.Mais comment faire pour récupérer  "la valeur


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales