Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2834 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  appel des threads dans une boucle while

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

appel des threads dans une boucle while

n°1537143
viphadia
Posté le 02-04-2007 à 10:34:57  profilanswer
 

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??????????? :??:  :??:  :??:  :??:  :??:  :??:  :??:  :??:  :??:  

mood
Publicité
Posté le 02-04-2007 à 10:34:57  profilanswer
 

n°1537181
brisssou
8-/
Posté le 02-04-2007 à 11:10:44  profilanswer
 

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
n°1537209
viphadia
Posté le 02-04-2007 à 11:38:01  profilanswer
 

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 ?

n°1537273
brisssou
8-/
Posté le 02-04-2007 à 13:00:21  profilanswer
 

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
n°1537283
viphadia
Posté le 02-04-2007 à 13:24:31  profilanswer
 

/*******************************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

n°1537300
did-54
Posté le 02-04-2007 à 14:01:22  profilanswer
 

ca va, c'est lisible :o

n°1537332
brisssou
8-/
Posté le 02-04-2007 à 14:44:28  profilanswer
 

j'ai pas osé [:mlc]


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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  appel des threads dans une boucle while

 

Sujets relatifs
Appel d'une dllfaire une boucle correcte... grand débutant
Bizarerie php et appel sleep()[SQL]Probeme $resultat et while
Afficher les resultat de plusieurs requete provenant d'une boucleprobleme de boucle dans Excel
appel d'un script dans un autrepassage tableau à tableau avec boucle for
appel de JS dans le htmlAccelerer exécution boucle en désactivant l'affichage
Plus de sujets relatifs à : appel des threads dans une boucle while


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR