Programmation thread pour réacteure

Fermé
anis - 8 sept. 2011 à 23:03
 anis - 8 sept. 2011 à 23:15
Bonjour,
j'ai un problème de synchronisation,
en faite j'ai créer les deux classes : Controleur, Capteur
public class Controleur extends Thread {
static int chanel;
public String chaineReponse;
private static final int deltat=1000;
private final int seuil=56;
static Random deltat2,deltat3,deltat4,deltat5;
Capteur C1 , C2 , C3 , C4 ;
float[] temperature = new float [4];

public Controleur()
{

}

public void run()
{

deltat2=C1.lindat2;
deltat3=C2.lindat2;
deltat4=C2.lindat2;
deltat5=C2.lindat2;
int chanel1=(int) C1.EnvoyerValeureTemperature(this);
int chanel2=(int)C2.EnvoyerValeureTemperature(this);
int chanel3=(int) C3.EnvoyerValeureTemperature(this);
int chanel4=(int) C4.EnvoyerValeureTemperature(this);
int l= deltat2.hashCode();
int l2=deltat3.hashCode();
int l3=deltat4.hashCode();
int l4=deltat5.hashCode();

try {
if (l<deltat && l2<deltat && l3<deltat && l4<deltat)
{
if(chanel1==chanel2 && chanel3==chanel4 && chanel3==chanel1 && chanel1<seuil)
{
System.out.println("c'est bien");
this.chaineReponse="température-normale";
}
else if (chanel1>=seuil)
{
System.out.println("c'est bien");
this.chaineReponse="Alarme température";
}
else
System.out.println("défaillance");
this.chaineReponse="défaillance";

}

sleep(deltat);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
et l'autre class

public class Capteur extends Thread {
static private int chanel;
int i=0;
static int temperature;
private Random rand = new Random(System.currentTimeMillis());
static Random lindat2= new Random(System.currentTimeMillis());


public Capteur() {
// TODO Auto-generated constructor stub

}
public int EnvoyerValeureTemperature(Controleur C)
{
C.chanel=temperature;
return chanel;

}
public void run() {
try{
synchronized(System.out)
{
System.out.println( "la valeure de la température :"+rand.nextInt(10) + i++);
temperature=rand.nextInt(100);
chanel= temperature;
System.out.println( "le delai : " + lindat2.nextInt(50) );
sleep(lindat2.nextInt(50));
}
}
catch(InterruptedException e)
{
}

}
}

Alors lorsque j'ai lancer l'exécution il m'affiche les bug suivante:

la valeure de la température :00
le delai : 20
Exception in thread "Thread-5" java.lang.NullPointerException
at Controleur.run(Controleur.java:25)
Exception in thread "Thread-6" java.lang.NullPointerException
at Controleur.run(Controleur.java:25)
Exception in thread "Thread-7" java.lang.NullPointerException
at Controleur.run(Controleur.java:25)
Exception in thread "Thread-4" java.lang.NullPointerException
at Collecteur.run(Collecteur.java:13)
la valeure de la température :00
le delai : 33
la valeure de la température :00
le delai : 28
la valeure de la température :00
le delai : 42

je ne sais pas comment je peux le résoudre

A voir également:

1 réponse

c'est la deuxième fois que je pose la question mais il n' y a plus de réponse .Je ne sais est ce qu'ils sont difficiles ?
0