Java thread
wiam_
Messages postés
188
Statut
Membre
-
wiam_ Messages postés 188 Statut Membre -
wiam_ Messages postés 188 Statut Membre -
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
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Waptrick java voiture - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
4 réponses
KX
Messages postés
19031
Statut
Modérateur
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