Lancer un traitement à partir d'un autre
Résolu/Fermé
manoulaa7
Messages postés
4
Date d'inscription
jeudi 20 décembre 2012
Statut
Membre
Dernière intervention
20 décembre 2012
-
20 déc. 2012 à 02:56
manoulaa7 Messages postés 4 Date d'inscription jeudi 20 décembre 2012 Statut Membre Dernière intervention 20 décembre 2012 - 20 déc. 2012 à 17:04
manoulaa7 Messages postés 4 Date d'inscription jeudi 20 décembre 2012 Statut Membre Dernière intervention 20 décembre 2012 - 20 déc. 2012 à 17:04
A voir également:
- Lancer un traitement à partir d'un autre
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Annuaire portable gratuit a partir d'un nom ✓ - Forum Mobile
- Retrouver quelqu'un avec son numéro de portable gratuitement ✓ - Forum Mobile
- Recherche a partir dune photo - Guide
- Lancer un programme au demarrage - Guide
4 réponses
manoulaa7
Messages postés
4
Date d'inscription
jeudi 20 décembre 2012
Statut
Membre
Dernière intervention
20 décembre 2012
2
20 déc. 2012 à 16:16
20 déc. 2012 à 16:16
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.
manoulaa7
Messages postés
4
Date d'inscription
jeudi 20 décembre 2012
Statut
Membre
Dernière intervention
20 décembre 2012
2
20 déc. 2012 à 16:40
20 déc. 2012 à 16:40
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
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
20 déc. 2012 à 16:56
20 déc. 2012 à 16:56
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(); }
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
20 déc. 2012 à 12:57
20 déc. 2012 à 12:57
Et alors ?
manoulaa7
Messages postés
4
Date d'inscription
jeudi 20 décembre 2012
Statut
Membre
Dernière intervention
20 décembre 2012
2
20 déc. 2012 à 17:04
20 déc. 2012 à 17:04
Merci bien, je veux l'adapter à mon code.
Modifié par KX le 20/12/2012 à 16:54
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