Lancer un traitement à partir d'un autre
Résolu
manoulaa7
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
manoulaa7 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
manoulaa7 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonsoir,
Mon problème est le suivant :
au cours d'un traitement lancer par une jframe, j'ai besoin dans un cas particulier ouvrir une deuxième jframe, réaliser un traitement au sein d'elle puis récupérer le résultat dans un vecteur, la fermer, et continuer mon premier traitement.
Mon problème est le suivant :
au cours d'un traitement lancer par une jframe, j'ai besoin dans un cas particulier ouvrir une deuxième jframe, réaliser un traitement au sein d'elle puis récupérer le résultat dans un vecteur, la fermer, et continuer mon premier traitement.
A voir également:
- Lancer un traitement à partir d'un autre
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Reconsidérer le traitement de vos informations à des fins publicitaires - Accueil - Réseaux sociaux
- Comment faire une recherche à partir d'une photo - Guide
- Traitement de texte gratuit - Guide
- Lancer un programme au démarrage windows 10 - Guide
4 réponses
Salut,
J'ai un traitement dans un bouton, au cours de ce traitement il y a un appel à un nouveau thread. Mon problème est : comment arrêter le premier traitement pour que le thread puisse se lancer et le reprendre une fois le thread a terminé son traitement.
J'ai un traitement dans un bouton, au cours de ce traitement il y a un appel à un nouveau thread. Mon problème est : comment arrêter le premier traitement pour que le thread puisse se lancer et le reprendre une fois le thread a terminé son traitement.
Voici ma classe Test qui contient le traitement principal :
public class Test {
static Vector v=new Vector();
public static void init() throws Exception{
//Initialisation du premier mot avec son annotation
if(!v.isEmpty()){
casinit("ATB1.xml");
}
else {
Runnable tache = new MonRunnable ();
Thread monThread = new Thread ( tache );
monThread . start ();
// la méthode creation necessite des données récuperées à partir du thread : monThread
creation(v);
}
}
}
Et la classe MonRunnable qui imlémente le traitement du thread :
public class MonRunnable implements Runnable {
public void run () { go (); }
public void go () {
AnnotationSystemManel.jFrame2.setVisible(true);
}
}
Le problème est que le traitement de la méthode creation se lance avant que le thread termine son traitement
public class Test {
static Vector v=new Vector();
public static void init() throws Exception{
//Initialisation du premier mot avec son annotation
if(!v.isEmpty()){
casinit("ATB1.xml");
}
else {
Runnable tache = new MonRunnable ();
Thread monThread = new Thread ( tache );
monThread . start ();
// la méthode creation necessite des données récuperées à partir du thread : monThread
creation(v);
}
}
}
Et la classe MonRunnable qui imlémente le traitement du thread :
public class MonRunnable implements Runnable {
public void run () { go (); }
public void go () {
AnnotationSystemManel.jFrame2.setVisible(true);
}
}
Le problème est que le traitement de la méthode creation se lance avant que le thread termine son traitement
Il ne s'agit alors plus vraiment d'arrêter le premier thread, mais plutôt d'attendre qu'il se termine !
Dans ce cas c'est encore plus simple avec la méthode join()
Dans ce cas c'est encore plus simple avec la méthode join()
public static void main(String[] args) throws InterruptedException { final Thread thread1 = new Thread() { public void run() { for (int i=0;i<10;i++) { System.out.println("Thread_1 = "+i); try { Thread.sleep(500); } catch (InterruptedException e) {} } } }; final Thread thread2 = new Thread() { @Override public void run() { for (int j=0;j<10;j++) { System.out.println("Thread_2 = "+j); try { Thread.sleep(500); } catch (InterruptedException e) {} } } }; thread1.start(); thread1.join(); thread2.start(); }
Remarque : les méthodes suspend() et resume() sont dépréciées. Dans mon exemple leur utilisation ne pose aucun problème, mais dans un programme qui manipule plus intensivement les Thread il vaudrait mieux ne pas s'en servir.
Voir : Java Thread Primitive Deprecation