appel des threads dans une boucle while

appel des threads dans une boucle while - Java - Programmation

Marsh Posté le 02-04-2007 à 10:34:57    

bonjour;
j'ai un problème lors de l'appel des trois threads dans une boucle while;
while(condition){
thread1;
thread2;
thread3;
}
lors d'execution ,le programme boucle d'une manière infinie parce que la condition ne change pas et l'execution des trois threads ne termine pas par exemple:
il execute une instruction de thread1 puis de thread2 puis de thread3 et il reteste la condition sans terminer toute l'execution??????????? :??:  :??:  :??:  :??:  :??:  :??:  :??:  :??:  :??:  

Reply

Marsh Posté le 02-04-2007 à 10:34:57   

Reply

Marsh Posté le 02-04-2007 à 11:10:44    

si la valeur de condition ne change pas, c'est normal que tu boucles.
 

Spoiler :

avec tous les détails précis que tu donnes, y a pas mieux comme réponse.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 02-04-2007 à 11:38:01    

je sais çaaaaaaaaaa! la condition ne change pas parce que l'execution  de ces trois threads ne se  termine pas;
qu'est ce que je peux ajouter aux codes de ces threads ?

Reply

Marsh Posté le 02-04-2007 à 13:00:21    

non, mais c'est bien, donne surtout aucun détails de ton code.
 
Je te répondrai dés que j'aurai mis la main sur une boule de cristal en état de marche ou un jeu de tarot.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 02-04-2007 à 13:24:31    

/*******************************envoi au client1************************************/
public static void emission(){
 
 
 
 class inter1 extends Thread  
 
{
/************************************/
 
private boolean arretDesQuePossible=false;  
 private Thread thread;  
String l1 = String.valueOf(l);
 String l2 = String.valueOf(k00-1);
String z = String.valueOf(zz);
String nb0 = String.valueOf(nb1);
 
  String tr11 = String.valueOf(100);
 
  BufferedReader canalLecture1;
 
  PrintStream canalEcriture1;
 
  BufferedReader canalLecture;
 
  PrintStream canalEcriture;
 
  ServerSocket ecoute;
 
  Socket ss=null;
 
  Socket client=null;
 
  DataInputStream in=null;
 
  PrintStream out=null;
 
Connection con = null;
 
ResultSet resultats = null;
 
Statement stmt;
 
/*************************************/
public void connexion(){
 
 
 
// chargement du pilote
 
 try {
 
      Class.forName("org.gjt.mm.mysql.Driver" ).newInstance();
 
     }  
 
 catch (Exception e)  
 
       {
 
        arret("Impossible de charger le pilote jdbc pour mySQL" );
 
       }
 
       
 
 //connection a la base de données
 
 affiche("connection a la base de donnees" );
 
 try {
 
      String DBurl = "jdbc:mysql://localhost/test?user=root";
 
      con = DriverManager.getConnection(DBurl);
 
     }  
 
 catch (SQLException e)  
 
       {
 
        arret("Connection a la base de donnees impossible" );
 
       }  
 
 
 
// affiche("creation et execution de la requete" );
 
 try {
 
      stmt = con.createStatement();
 
      resultats = stmt.executeQuery("SELECT * FROM zoo" );
 
     }  
 
 catch (SQLException e)  
 
       {
 
        arret("Anomalie lors de l'execution de la requete" );
 
       }
try {
 
       
 Statement stmt10 = con.createStatement();
 
       ResultSet res5 = stmt10.executeQuery("select count(*) from zoo" );
      boolean encore = res5.next();
 int i2=0;
 
        while (encore)  
 
            {  
 
             
 
        total= res5.getInt("count(*)" );
 encore = res5.next();
i2++;
}
 
 
     }  
 
 catch (SQLException e)  
 
       {
 
        arret("Anomalie lors de l'execution de la requete******" );
 
       }
 
       
 
 
 
 
 
}
 
/*************************************/
 
 public  void affiche(String message) {
 
    System.out.println(message);
 
  }
 
/*****************************************/
 
 public  void arret(String message) {
 
    System.err.println(message);
 
    System.exit(99);
 
  }
 
 
/******************************************/
 
 
 
 
 
 
 
inter1 ( ) {
 
 
 
  thread = new Thread(this);
 
 
}
  public void demarrageEnParallele() {
    thread.start();
  }
 
 public void attenteArretEffectif() {
    try {
      thread.join();
   
    } catch (Exception e) { System.out.println("Le thread emission est mort" );
      // veut-on toujours remonter l'exception ?
    }
  }
 
 
 
public void run ( )
 
{
 
//isRunning=true;
    // while(isRunning){  
 
 try {  
 
 
 
     ok1=true;  
 
     f1=100;
 
      occup[1]=0;
     ss=  new Socket( InetAddress.getByName("sabrina" ), 10 );
 System.out.println("1111111111111111111111111111" );
 
      canalLecture1= new BufferedReader(new InputStreamReader(ss.getInputStream()));
 
      canalEcriture1=new PrintStream(ss.getOutputStream());
 
      System.out.println("connexion etablie: "+ss.getInetAddress()+ " port: "+ ss.getPort());
       canalEcriture1.println(l1);
       l1=canalLecture1.readLine();
         System.out.println("Le niveau :"+l1);
       canalEcriture1.println(nb0);
       nb0=canalLecture1.readLine();
         System.out.println("la condition d'arret :"+nb0);
 
 
      if(l==1)
{          
 
     canalEcriture1.println(tr11);
     tr11=canalLecture1.readLine();
 
     System.out.println("tr1="+tr1);
 
     System.out.println("ddddddddddddddddddddddddddd" );  
 
         
 
    connexion();
 
         
 
        stmt = con.createStatement();
 
        resultats = stmt.executeQuery("SELECT *  from zoo where id>0 and id<='"+f1+"' " );
 
       
 
        i=1;
 
        boolean encore = resultats.next();
 
        while (encore)  
 
            {  
 
             
 
        int col1 = resultats.getInt("c1" );
 
        int col2 = resultats.getInt("c2" );
 
        int col3 = resultats.getInt("c3" );
 
        int col4 = resultats.getInt("c4" );
 
        int col5 = resultats.getInt("c5" );
 
        int col6 = resultats.getInt("c6" );
 
        int col7 = resultats.getInt("c7" );
 
        int col8 = resultats.getInt("c8" );
 
        int col9 = resultats.getInt("c9" );
 
        int col10 = resultats.getInt("c10" );
 
       
 
       
 
       String col1s = String.valueOf(col1);
 
       String col2s = String.valueOf(col2);
 
       String col3s = String.valueOf(col3);
 
       String col4s = String.valueOf(col4);
 
       String col5s = String.valueOf(col5);
 
       String col6s = String.valueOf(col6);
 
       String col7s = String.valueOf(col7);
 
       String col8s = String.valueOf(col8);
 
       String col9s = String.valueOf(col9);
 
       String col10s = String.valueOf(col10);
 
 
 
 
 
        canalEcriture1.println(col1s);
 
        col1s=canalLecture1.readLine();
 
        System.out.println("cl1+client1="+col1s);
 
         
 
        canalEcriture1.println(col2s);
 
        col2s=canalLecture1.readLine();
 
        System.out.println("cl2+client1="+col2s);
 
       
 
        canalEcriture1.println(col3s);
 
        col3s=canalLecture1.readLine();
 
         System.out.println("cl3+client1="+col3s);
 
         
 
        canalEcriture1.println(col4s);
 
        col4s=canalLecture1.readLine();
 
         
 
        canalEcriture1.println(col5s);
 
        col5s=canalLecture1.readLine();
 
         
 
        canalEcriture1.println(col6s);
 
        col6s=canalLecture1.readLine();
 
         
 
        canalEcriture1.println(col7s);
 
        col7s=canalLecture1.readLine();
 
         
 
        canalEcriture1.println(col8s);
 
        col8s=canalLecture1.readLine();
 
         
 
         
 
        canalEcriture1.println(col9s);
 
        col9s=canalLecture1.readLine();
 
         
 
        canalEcriture1.println(col10s);
 
        col10s=canalLecture1.readLine();
 
 
 
             
 
        encore = resultats.next();
 
        i++;  
 
            }  
 
occup[1]=1;
try{
ss.close();
System.out.println("ss 1 est terminée******" );
 }
catch (Exception ee){
 
            ee.printStackTrace(); System.out.println("ss 1 n' est pas terminée******" );
 
        }
reception();
ok1=false;
 
 
}  
else
if((l<=10)&&(zz!=0))
{
 
canalEcriture1.println(l2);
l2=canalLecture1.readLine();
 System.out.println("Le nombre des mots à creer+client1 :"+l2);
l2="";
 
      for(int i=1;i<=k00-1; i++){          
 
     canalEcriture1.println(concat[i]);
concat[i]=canalLecture1.readLine();
 
     System.out.println("les colonnes à calculer+client1="+concat[i]);
}
occup[1]=1;
reception();
ok1=false;
}
 
else if((zz==0))
{
canalEcriture1.println(z);
z=canalLecture1.readLine();
 System.out.println("Merci le travail est fini " );
labeletat1=new JLabel("CLIENT 1 EST LIBRE" );
occup[1]=1;
 
}
 
 
 
 
        }
 
        catch (Exception ee){
 
            ee.printStackTrace(); System.out.println("erreur+client1***************" );
 
        }
 
//*************************/
finally
   {
 
     if (ss != null)
     {
try{
       ss.close();
       ss = null;
}
catch (Exception ee){System.out.println("non ferme1" );}
     }
for (int i = 0; i < 30; i++) {
      if (arretDesQuePossible) {
       return; // Termine le thread
 
      } else {
        try {
          Thread.sleep(100); // Mise en sommeil
        } catch (InterruptedException e) {}
      }
    }
 
   }
 
 
}
 
 
 
/**********************************/  
 
  public void demandeArretDesQuePossible() {
   arretDesQuePossible = false;
}
  public void demandeEtAttenteArretDesQuePossible() {
    demandeArretDesQuePossible();
    attenteArretEffectif();
  }
/*****************************************/
 
}
 
inter1 activite = new inter1();
 activite.demarrageEnParallele();
 
     
 activite.demandeArretDesQuePossible();
 
 
}
c'est le code d'un thread les autres ont le meme code sauf les ports et les @ip sont modifiés;
merci de votre attention

Reply

Marsh Posté le 02-04-2007 à 14:01:22    

ca va, c'est lisible :o

Reply

Marsh Posté le 02-04-2007 à 14:44:28    

j'ai pas osé [:mlc]


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed