cs_soumia_info
Messages postés39Date d'inscriptionsamedi 26 mai 2007StatutMembreDernière intervention31 août 2007
-
20 juin 2007 à 10:41
cs_soumia_info
Messages postés39Date d'inscriptionsamedi 26 mai 2007StatutMembreDernière intervention31 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?
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 ..."
cs_soumia_info
Messages postés39Date d'inscriptionsamedi 26 mai 2007StatutMembreDernière intervention31 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
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 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 ..."
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 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 ..."