Je souhaite creer 2 threads. Un affiche une valeur et l'autre l'incrémente.
Seulement je veux qu'a chaque boucle la valeur prise soit la valeur actuelle et pas la valeur passée en paramètre à l'appel des threads au début.
j'ai écrit le programme suivant qui fait tourner 2 threads. Chacun travaille indépendemment. Pouvez vous me dire les modifications à apporter pour qu'il y ait un partage de ressources merci
thread1:
thread2:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public class classe1 implements Runnable{ public void run(){ int valeur; for(;;) { System.out.println("thread1: " + valeur); valeur ++; try{Thread.sleep (5000);} catch (InterruptedException e) { } } }
et le main:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 public class classe2 implements Runnable{ public void run(){ int valeur = 0; for(;;) { Conversation.append("\n" + " thread2: " + valeur); try{Thread.sleep (5000);} catch (InterruptedException e) { } } }
il me faudrait surement un main du genre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public static void main(String[] args) throws IOException { classe1 c1= new classe1(); classe2 c2 = new classe2(); new Thread(c1).start(); new Thread(c2).start(); }
mais je n'arrive pas à passer de paramètre à la méthode run et je ne sais pas comment faire pour qu'à chaque boucle, la valeur prise soit celle qui circule entre les threads et pas celle de départ.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public static void main(String[] args) throws IOException { int valeur = 0; classe1 c1= new classe1(valeur); classe2 c2 = new classe2(valeur); new Thread(c1).start(); new Thread(c2).start(); }
Si cela marche il y a t-il des risques de conflits à l'accès. g vu dans des cours sur le net l'emploi de Synchronized. Comment vérouiller l'acces pour que lorsque le thread 1 incrémente la valeur, le thread2 n'essaye pas d'afficher. merci de vos réponses.
Partager