bonsoir, j'ai un problème lors de synchronisation, vue que mon code est très compliqué, j'ai essayée de transfèrer ma problématique à travers un simple exemple compréhensible.
voici l'exemple:
j'ai besoin à t=1 de calculer x puis le programme se met en attente (ce qui est en bleu) jusqu'à ce que le thread calcule la valeur de y
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 public class tictac implements Runnable { int x,y; public void run() { int a=2; int b=4; x=a+b; try{Thread.sleep(1000); y=b-a+x; } catch (InterruptedException e){}; } public tictac(){ } public void affiche(){ Thread th=new Thread(this); th.start(); try { th.join(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("bonjour"); int somme=(x+y); System.out.println("la somme est "+somme); double x=Double.POSITIVE_INFINITY; System.out.println("l'infinie est"+ x); } public static void main(String argv[]) { //ThreadTest tic = new ThreadTest("TIC"); //ThreadTest tac = new ThreadTest("TAC"); tictac a=new tictac(); a.affiche(); } }
mais en appliquant ce code l'instruction en rouge elle même se met en attente du thread jusqu'à ce dernier termine l'exécution de ces instructions, ma problématique est comment puisse je exécuter l'instruction en rouge en parallèle avec le thread et l'instruction en bleu après le thread
j'ai reflèchie à introduire notion de priorité des instructions à exécuter par exemple donner à l'instruction enrouge une priorité élevé d'une façon elle s'exécuter sans arrêt, mais comment le faire en plus je ne sais pas si ça existe en java ou bien nn.
bon peut être y t'il qlq qui a une autre solution plus simple et claire.
merci d'avance pour l'aide
Partager