Java thread
wiam_
Messages postés
168
Date d'inscription
Statut
Membre
Dernière intervention
-
wiam_ Messages postés 168 Date d'inscription Statut Membre Dernière intervention -
wiam_ Messages postés 168 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai un petit pb avec les thread en java , voici la structure de mon programme
Laclasse extends thread {
- première méthode qui établie une connexion udp , et envoie des mise à jour à une autre classe , de temps en temps
- deuxième méthode qui permet d'incrémenter le compteur de la classe
- troisième méthode qui permet de décrémenter le compteur de la classe
}
-ce que je souhaite faire est de créer une méthode run qui ne s'arrete jamais, qui permet de lancer ces trois méthodes mais aléatoirement, c à dire pas dans un ordre précis , ni le même nbre de fois. je veux par exemple que la première méthode envoie des mise à jour en permanence à l'autre classe mais pas après chaque incrémentation du compteur , et la troisième peut être appelé parfois après la trsième, parfois avant ... et ainsi de suite
J'ai essayé avec une méthode comme ça, avec des sleep() aléatoire à l'intérieur de chaque méthode,
public void run(){
while(true){
methode1();
methode2();
methode3();
}
}
mais les 3 méthodes sont tjrs appelé le même nbre de fois et dans le même ordre.
si qql peut dire comment je peux faire , ce serait gentil
Merci
j'ai un petit pb avec les thread en java , voici la structure de mon programme
Laclasse extends thread {
- première méthode qui établie une connexion udp , et envoie des mise à jour à une autre classe , de temps en temps
- deuxième méthode qui permet d'incrémenter le compteur de la classe
- troisième méthode qui permet de décrémenter le compteur de la classe
}
-ce que je souhaite faire est de créer une méthode run qui ne s'arrete jamais, qui permet de lancer ces trois méthodes mais aléatoirement, c à dire pas dans un ordre précis , ni le même nbre de fois. je veux par exemple que la première méthode envoie des mise à jour en permanence à l'autre classe mais pas après chaque incrémentation du compteur , et la troisième peut être appelé parfois après la trsième, parfois avant ... et ainsi de suite
J'ai essayé avec une méthode comme ça, avec des sleep() aléatoire à l'intérieur de chaque méthode,
public void run(){
while(true){
methode1();
methode2();
methode3();
}
}
mais les 3 méthodes sont tjrs appelé le même nbre de fois et dans le même ordre.
si qql peut dire comment je peux faire , ce serait gentil
Merci
A voir également:
- Java thread
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
4 réponses
KX
Messages postés
16761
Date d'inscription
Statut
Modérateur
Dernière intervention
3 020
Non, entre 1h et 10h du matin les gens ont souvent pour habitude de dormir ;-)
Essaye ceci :
import java.util.random; class Laclasse extends Thread { ... private Random r; Laclasse(...) { ... r=new Random(); } ... public void run() { switch (r.nextInt(3)) { case 1 : methode1(); break; case 2 : methode2(); break; case 3 : methode3(); break; } run(); } }
merci pour ta réponse, le switch est une bonne idée ,
ça m'arrange très bien pour les methodes 2 et 3, par contre pour la méthode 1 , je voudrais qu'elle envoie des mise à jour régulièrement , par exemple je veux qu'elle soit appelée toutes les 2 min . si t'as une autre proposition ce serait sympa :)
Merci encore
ça m'arrange très bien pour les methodes 2 et 3, par contre pour la méthode 1 , je voudrais qu'elle envoie des mise à jour régulièrement , par exemple je veux qu'elle soit appelée toutes les 2 min . si t'as une autre proposition ce serait sympa :)
Merci encore
Essaye ceci :
La confiance n'exclut pas le contrôle
import java.util.random; class Laclasse extends Thread { ... private Random r; private long nextUpdate; Laclasse(...) { setDaemon(true); // thread démon ... r=new Random(); nextUpdate=System.currentTimeMillis(); } ... public void run() { while(true) // thread démon, s'arrêtera avec le processus appelant { if (System.currentTimeMillis() > nextUpdate) { methode1(); nextUpdate = System.nextTimeMillis()+120000; // 2 mn } switch (r.nextInt(2)) { case 2 : methode2(); break; case 3 : methode3(); break; } } } }
La confiance n'exclut pas le contrôle