Thread

cs_soumia_info Messages postés 39 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 31 août 2007 - 20 juin 2007 à 10:41
cs_soumia_info Messages postés 39 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 31 août 2007 - 20 juin 2007 à 12:40
salut , j'ai realise une application qui recharger une classe deja existe et de l'instancie , mais si la classe  est deja instancie  les dernier moification ne sont pas pris en consideration (la classe est une thread)
-j'ai une idée "suprimer le premier thread est relancer un nouveau"
-mais ca marche pas comment faire ? est ce que on peut  decharger un classe deja charger et instacie?

6 réponses

Twinuts Messages postés 5373 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 10 août 2022 110
20 juin 2007 à 11:28
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" />
<title>
</title>
<meta name="GENERATOR" content="OpenOffice.org 2.2 (Linux)" />
<meta name="CREATED" content="20070620;11281800" />
<meta name="CHANGED" content="16010101;0" />
<style type="text/css">
<!--
@page { size: 21cm 29.7cm; margin: 2cm }
P { margin-bottom: 0.21cm }
-->
</style>
Salut,

oui c'est
possible.
comment ? faut plus d'infos ^^ comment tu l'instancie
ton thread, if fait quoi ? il possède une méthode pour
l'arrêter (autre que la méthode stop qui est deprecated)
?

"les dernières modifications ne sont pas pris en
considération"
Comment ça tu lui fais quoi
?

faudrait le code créant l'instace et le code du
Thread ainsi que le code qui permet les modifications.









------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
cs_soumia_info Messages postés 39 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 31 août 2007
20 juin 2007 à 11:56
salut mon thread ne possed pas une methode d'arrete .
-j'ai fait des modification sur la classe en suit j'ai recharger cette classe ,
mais si la classe est daja instancier les modification ne sont pas pris en consediration c'est ta dire il y'a une instance de cette classe (avant les modification) dans le jvm
-et si la classe n'a pas instancier avant les modification  quede je recherger la classe avec les nouveau modification ces modifications  sont pris en consediration
le code de ma classe thread
package projetserveur;
 import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
public class FipaRequestInitiateur extends Thread{
  private MessageActif actif;
 protected String ConversationId=new String();
protected  ACLMessage msg;
 static boolean finished;
 public Session session= new Session();
  public FipaRequestInitiateur() {  }
 
public FipaRequestInitiateur(MessageActif actif,ACLMessage msg,boolean finished){
this.actif=actif;


this.msg=msg;
this.finished=finished;
this.sendInitiation(this.msg); }
public void sendInitiation(ACLMessage msg){
 if(msg!=null){
Plate_FormeFrame.AddMessage(msg);
this.actif.SendMessageMTS(msg);
 } }
 public synchronized void SuiviSequence(ACLMessage reply) {
if (this.session != null) {
int perf = reply.getPerformative();
if (this.session.update(perf)) {
switch (this.session.getState()) {
case Session.POSITIVE_RESPONSE_RECEIVED:
break;
case Session.NEGATIVE_RESPONSE_RECEIVED:
this.actif.SendMessage(reply);
break;
case Session.RESULT_NOTIFICATION_RECEIVED:
this.actif.SendMessage(reply);
 break;
default:
System.out.println("erreur suivi protocole" );
}
if (this.session.isCompleted()) {
this.finished=true;
ACLMessage mms = new ACLMessage();
mms.setConversationId(reply.getConversationId());
this.actif.done(mms);
}
}else {
System.out.println("suivi performative non juste");
} }
System.out.println("suivi terminer");
}
static class Session implements Serializable{
static final int INIT = 0;
static final int POSITIVE_RESPONSE_RECEIVED = 1;
static final int NEGATIVE_RESPONSE_RECEIVED = 2;
static final int RESULT_NOTIFICATION_RECEIVED = 3;
private int state = INIT;
   boolean update(int perf) {
switch (state) {
case INIT:
   switch (perf) {
 case ACLMessage.AGREE:
     state = POSITIVE_RESPONSE_RECEIVED;
     return true;
 case ACLMessage.REFUSE:
 case ACLMessage.NOT_UNDERSTOOD:
    state = NEGATIVE_RESPONSE_RECEIVED;
   return true;
   default:
        return false;
  }
  case POSITIVE_RESPONSE_RECEIVED:
     switch (perf) {
     case ACLMessage.INFORM:
    case ACLMessage.FAILURE:
       state = RESULT_NOTIFICATION_RECEIVED;
      return true;
 default:
     return false;
     }
 default:
      return false;
  }
}
int getState() {
  return state;
}
boolean isCompleted() {return (state NEGATIVE_RESPONSE_RECEIVED || state RESULT_NOTIFICATION_RECEIVED);
}
protected void reset(){
this.state=INIT;
}
}
protected void resetSession(){
this.session.reset();
}
}
merci d'avance
0
Twinuts Messages postés 5373 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 10 août 2022 110
20 juin 2007 à 12:07
Salut,

ouep c'est sur que tu
ne peux l'arreter ton Thread vu qu'il ne contient pas de méthode run en
gros tu hérite de Thread juste pour dire que tu en hérite.

sinon
ne sachant toujours pas comment tu l'appels et ce que tu entends par le
modifier.... je te dirai simplement que tu créer une instance d'un
Thread qui ne se start jamais et meurt vite fait de sa bonne mort.....

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
cs_soumia_info Messages postés 39 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 31 août 2007
20 juin 2007 à 12:16
 mais comment creer un thred qui arrete?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Twinuts Messages postés 5373 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 10 août 2022 110
20 juin 2007 à 12:36
Salut,

c'est assez simple :

public class MyThread extends Thread {

    private boolean end = false;
   
    public void run() {//méthode appelée par le thread
        while(!end) {
            // ton code ici
            //NOTE : Il sera appelé à chaques boucle
            //exemple
            System.out.println("Tour de boucle");
        }
    }
   
    //stop le thread
    public void end() {
        end = true;
    }
}

je te conseils de regarder des tutos sur les thread....

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
cs_soumia_info Messages postés 39 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 31 août 2007
20 juin 2007 à 12:40
merci je suis en train d'essaie votre solution.
0