cs_maymouta
Messages postés12Date d'inscriptionmercredi 3 février 2010StatutMembreDernière intervention27 mai 2011
-
4 mars 2010 à 10:52
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013
-
4 mars 2010 à 11:57
bonjour tout le monde, j'ai un problème lors d'utilisation de thread je ne maitrise pas bien cette notion mais j'en ai besoin, voici le code :
public class tictac implements Runnable {
int x,y;
public void run() {
int a=2; int b=4;
System.out.println("bonjour");
x=a+b;
try{Thread.sleep(1000);
y=(b-a)+x;
}
catch (InterruptedException e){};
}
public tictac(){
}
public void affiche(){
Thread th=new Thread();
th.start();
int somme=(x+y);
System.out.println("la somme est "+somme);
}
public static void main(String argv[]) {
tictac a=new tictac();
a.affiche();
}
}
j'ai besoin de calculer la somme de deux entiers x et y, je lance un thread qui me permet à t=0 de calculer la valeur de x, puis il se met en attente jusqu'à t=1s pour reprendre le calcul de y, alors puisque la somme dépend de x et y alors il faut que le programme principal (la fonction affiche elle même se met en attente jusqu'à ce que le thread lui renvoi les valeurs de x et y pour qu'elle puisse calculer la somme correctement
en exécutant le programme la somme est 0, elle est erronée comme si le thread ne s'exécute pas, alors j'ai besoin de votre aide vraiment je ne le maitrise pas bien ce thread.
merci infiniment
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013129 4 mars 2010 à 11:13
Salut,
Forcément : tu crée ton thread, tu le lance, puis tu fais la somme aussitôt et tu quitte ton programme.
Donc il n'a même pas le temps de se lancer que tu as déjà quitté ton programme !
C'est un problème de synchronisation : il faut bloquer l'exécution de ton programme tant que le threads n'est pas fini (c'est ce qu'on appelle une sémaphore), mais dans ton cas là, je ne vois vraiment pas l'intérêt d'utiliser un thread (si ce n'est d'apprendre à faire des threads !)).
Je te laisse lire le tutorial de sun sur les threads... c'est la moindre des choses quand on programme des threads et qu'on veut comprendre ce qu'on fait.
______________________________________
AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
cs_maymouta
Messages postés12Date d'inscriptionmercredi 3 février 2010StatutMembreDernière intervention27 mai 2011 4 mars 2010 à 11:44
merci pour l'aide,
mon code est plus compliquée que cet exemple, mais j'ai un problème lors d'exécution de thread, car c'est la premier fois que j'utilise un tread, et pour expliquer mon problème d'une façon très simple j'ai choisie de donner un exemple simplifié pour trouver des solutions afin de corriger l'état de blocage.
moi j'ai besoin dés que j'appelle la fonction affiche, un thread qui s'exécute pour calculer la valeur de x, puis il se met en attente pendant 1s (pendant cette durée, la fonction affiche doit elle même se mettre en attente jusqu'à se que le thread termine ces instructions après l'attente) et dés que la période d'attente s'achéve je vais que le thread reprend le calcul de valeur de y puis il se met en état d'arrêt pour donner le processeur à la méthode affiche pour qu'elle calcule la somme de deux valeurs x et y.
je ne sais pas mais le thread ne s'exécute pas mais je vais prendre votre conseil sérieusement et je vais essayée de voir les notions de thread, pourtant j'ai passée 4 jours en cherchant une solution mais vraiment c'est le manque de temps qui m'oblige de poser mon problème sur le forum afin de trouver une solution à travers des gents qui ont une bonne expérience dans ce domaine.