salut tout le monde,
j'ai fais un petit programme utilisant les threads. J'ai cree une classe producteur, consommateur, filemessages et main.
j'ai un petit probleme dans l'utilisation de la classe filemessages dans les classes producteur et consommateur. En effet, je declare un vecteur statique file dans la classe filemessages et dans les classes prod et cons, je declare une variable de type filemessages. Resultat : j'ai une erreur dans les deux classes prod et cons disant que file n'est pas reconnu alors que c'est un vecteur statique...
pourriez-vous m'aider s'il vous plait ?
consommateur :
Producteur :
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 import java.lang.Object; import java.lang.Thread; import java.util.Vector; public class consommateur implements Runnable{ private Thread monThread; private String nom; public void demarrer(){ if(monThread == null){ monThread = new Thread(this); monThread.start(); } } public void arreter(){ if(monThread.isAlive()){ monThread.interrupt(); monThread=null; } } public void run(){ try{int i =0; while(! monThread.isInterrupted()){ String mess = "message n° " + i; i--; [b]maFile[/b].retirer(mess);//l'erreur est là... il reconnait pas maFile monThread.sleep(200); } }catch(InterruptedException e){System.out.println("Interruption !");} } }
filemessages :
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 import java.lang.Object; import java.lang.Thread; import java.util.Vector; public class producteur implements Runnable { private Thread monThread; // private String nom; public void demarrer(){ if(monThread==null){ monThread = new Thread(this); monThread.start(); } } public void arreter(){ if(monThread.isAlive()){ monThread.interrupt(); monThread = null; } } /* (non-Javadoc) * @see java.lang.Runnable#run() */ public void run(){ try { int i =0; while(!monThread.isInterrupted()){ String mess = "message n° "+i; i++; [b]maFile[/b].inserer(mess); monThread.sleep(200); } }catch(InterruptedException e){ System.out.println("Interruption !"); } } }
merci beaucoup.
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 import java.lang.Object; import java.lang.Thread; import java.util.Vector; public class filemessages { static final int taillemax = 30; static Vector maFile; public filemessages(){ maFile= new Vector(); } public synchronized void inserer (String m)throws InterruptedException{ while(maFile.size()==taillemax){ System.out.println("Wait..."); wait(); } maFile.addElement(m); System.out.println("Signal !"); notify(); } public synchronized String retirer()throws InterruptedException{ while(maFile.size()==0){ System.out.println("Wait..."); wait(); } String mess = (String)maFile.firstElement(); maFile.removeElement(mess); notify(); System.out.println(mess); return mess; } }
Partager