Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2896 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  utiliser l'horloge pour ordonnancer les taches

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

utiliser l'horloge pour ordonnancer les taches

n°1847372
fleure2008
Posté le 04-02-2009 à 23:07:04  profilanswer
 

bonsoir, je veux utiliser l'horloge pour delacher et ordonnancer les taches d'un processus.
j'ai assigné un temps random pour le temps d'exécution de chaque taches.mais j'ai pas trouvé comment faire attendre l'horloge pour qu'elle déclanche une tache2 après la fin de l'exécution de la tache1,càd l'horloge dois attendre la fin de tache1 pourr déclancher la tache2.
merci.  

mood
Publicité
Posté le 04-02-2009 à 23:07:04  profilanswer
 

n°1847375
Taz
bisounours-codeur
Posté le 04-02-2009 à 23:12:36  profilanswer
 

tache1; Thread.sleep(1000); tache2

n°1847378
fleure2008
Posté le 04-02-2009 à 23:21:23  profilanswer
 

oui j'ai deja fais mais sa donne pas les résultats exéctes  
ce que j'ai fais j'ai recupéré l'hologe (heur,minutes,seconde) ensuite je assigné un temps d'exécution pour chaque taches qui égale à une valeur entiere random,le temps de fin d'une tache est calculé par temps1=(temps de l'hologe+temps d'exécution) alors pour déclacher une tache2 je dois attendre que l'horloge ==temps1 calculé avant.

n°1847380
Taz
bisounours-codeur
Posté le 04-02-2009 à 23:22:50  profilanswer
 

du code ?

n°1847382
fleure2008
Posté le 04-02-2009 à 23:29:13  profilanswer
 

int h=calend.get(GregorianCalendar.HOUR_OF_DAY);
int min=calend.get(GregorianCalendar.MINUTE);
int sec=calend.get(GregorianCalendar.SECOND);
Vector temps=new Vector();
v.add(nom_taches);
v.add(h,min,sec)// temps de début d'une tache
temps_execution=(int)(Math.random()*30+1)
// temps d'exécution  entre 1 et 30 seconde.  
exécuter(nom_tache)// exécuter tache1
sleep(temps_execution)
// normalement je dois attendre au minimum un temps==temps  
//d'exécution de la tache1 après j'exécute la tache2
executer(tache2).  
 

n°1847692
Bidem
Posté le 05-02-2009 à 18:19:32  profilanswer
 

fleure2008 a écrit :

bonsoir, je veux utiliser l'horloge pour delacher et ordonnancer les taches d'un processus.
j'ai assigné un temps random pour le temps d'exécution de chaque taches.mais j'ai pas trouvé comment faire attendre l'horloge pour qu'elle déclanche une tache2 après la fin de l'exécution de la tache1,càd l'horloge dois attendre la fin de tache1 pourr déclancher la tache2.
merci.  


 
Dis moi si j'ai bien compris ton besoin :
 - tu as 2 traitements s'exécutant dans des Thread
 - l'ordonnanceur doit lancer les 2 traitement de façon séquentielle (le traitement 2 ne se lance que quand le traitement 1 est fini)
 
=> utilise Thread.join()
 
Le code donnera un truc comme ça
 

Code :
  1. // lancer l'execution de la tache1 tout en récupérant une référence vers le Thread créé
  2. Thread traitement1 = executer(nom_tache);
  3. traitement1.join(); // on attend la fin avant de faire autre chose
  4. // lancer l'execution de la tache 2
  5. Thread traitement2 = executer(tache2);

n°1847732
fleure2008
Posté le 05-02-2009 à 21:11:02  profilanswer
 

pouvez vous me donner un exemple de code.
merci

n°1856954
fleure2008
Posté le 02-03-2009 à 22:59:31  profilanswer
 

ce que je veux fair c'est je dois bloqué l'exécution de la tache2 jusqu'à ce que le temps d'exécution de la tache1 est fini(ce temps est donné aléatoirement),j'arrive pas à avoir la valeur de ce temps exactement avec sleep(temps). parsque dans sleep(int) le temps d'attendte est considéré en milisecont mais mon temps d'exécution est généré en seconde. j'ai fais sleep(temps*1000000) pour avoir le temps en seconde mais toujours je le reçois beaucoup plus petit.

n°1856996
post_it
Hmmmm!...
Posté le 03-03-2009 à 08:32:58  profilanswer
 

!!! 1 seconde = 1000 millisecondes !!!

n°1857012
fleure2008
Posté le 03-03-2009 à 10:08:34  profilanswer
 

oui m'ai j'ai pas toujours le résultat que je veux.

mood
Publicité
Posté le 03-03-2009 à 10:08:34  profilanswer
 

n°1857046
Bidem
Posté le 03-03-2009 à 12:09:37  profilanswer
 

On ne comprend pas ce que tu veux ...
 
Si tu veux que la tache 2 attende que la tache 1 soit finie, il faut utiliser join et pas sleep
 
Si tu veux utiliser l'horloge (donc sleep) pour retarder la tache 2, tu n'a aucun moyen de savoir à l'avance combien de temps va mettre la tache 1 pour s'executer !
 
Montre nous ton code.

n°1857073
fleure2008
Posté le 03-03-2009 à 13:39:23  profilanswer
 

c'est juste un exemple:  
Vector temps_exe_tache=new Vector();
String[] tache;// on supose que tache est remplit
for(int i=0;i<tache.length;i++){
            temp=(int)(Math.random()*10+1);// entre 1 et 10.  
          //on asigne aux taches un temps d'exécution  
             temps_exe_tache.add(temp);
}
// je dois executer maintement les taches  
 
for(i=0;i<tache.length;i++){
  executer(tache[i]);
 //pour attendre la fin da tache(i)  j'ai fais ce code mais je recoie tjrs
 // un temps très petit  
Thread.sleep(temps_exe_tache(i));
 
}
le probleme avec join,j'ai pas le moyen de contôler le temps d'exécution de la tache1 pour bloké les autre taches.  
est ce que je peux faire une sorte de boucle qui tourne dans le vide en comptant le de 0 à temps d'exécution de tache1 pour donne la main à la tache2 de s'exécuter Càd sans passer par les threads.
merci encore

n°1857081
fluminis
Posté le 03-03-2009 à 13:53:41  profilanswer
 

fleure2008 a écrit :

le probleme avec join,j'ai pas le moyen de contôler le temps d'exécution de la tache1 pour bloké les autre taches.  
est ce que je peux faire une sorte de boucle qui tourne dans le vide en comptant le de 0 à temps d'exécution de tache1 pour donne la main à la tache2 de s'exécuter Càd sans passer par les threads.
merci encore


 
Justement, le principe de join c'est que tu n'as plus besoin de calculer le temps d'execution de tache 1.
 
En gros ca va te faire :
 
tache 1 s'execute autant de temps qu'elle veut,
puis une fois qu'elle se termine elle redonne la main a ton prog qui peut tranquilement lancer tache2 en etant sûr que tache 1 est finie et ainsi de suite pour la tache suivante
 
Donc tu laisses tomber sleep, et tu utilises join comme expliqué plus haut.


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
n°1857101
fleure2008
Posté le 03-03-2009 à 14:03:40  profilanswer
 

SVP est ce que tu peux me donner un exemple du code,j'ai dejà utilisé join mais sa n'a pas marché.

n°1857197
Bidem
Posté le 03-03-2009 à 17:19:39  profilanswer
 

En fait là, ça dépend de ce que fait ta méthode executer et de comment elle le fait.
 
Est ce que ça lance un thread ?
Si oui, il faut que la méthode fasse un return du Thread créé.
 
Là encore, ça serait bien que tu nous montres le code de la méthode executer.
Et le vrai code, pas un truc d'exemple...

n°1857225
fleure2008
Posté le 03-03-2009 à 18:08:21  profilanswer
 

enfait la methode executer c'est une class thread qui implémente Runnable.et qui génére un temps avec la methode random.(le principe c'est sa).
 
public class execution extends Thread implement runnable{
/*
public static String tache;
public static int attendre;//le temps que la tache2 dois attendre
 
*/  
execition(String t){
this.tache=t;
attendre=execution(tache);
//normalement ici la tache2 va attendre un temps==attendre
}
// la methode qui genere un temps d'exécution pour une tache
public static int execution(String t){
int temps=(int)(Math.random()*10+1);
return temps;
}
}

n°1857229
fleure2008
Posté le 03-03-2009 à 18:15:40  profilanswer
 

SVP quelqu'un peux me donner un exemple concret du code pour la methode join.et coment je peux controler l'exécution d'un ensemble de taches sur l'axe du temps.  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  utiliser l'horloge pour ordonnancer les taches

 

Sujets relatifs
[VBS] Utiliser le FTP ?Utiliser dojo
Utiliser une DLL sur un ordinateur distantcomment recuperer la memoire et cpu utiliser par un process
Utiliser dll dans du javaProblème pour utiliser la fonction split
[PHP] Quel CMS avec module de calendrier utiliser ?Effet grossisant sur une image quelle librairie utiliser ?
[Resolu][Mysql] Utiliser un IF ... THEN ... ELSE ... END IF ?utiliser une dll compilée en C# dans un projet VisualC++
Plus de sujets relatifs à : utiliser l'horloge pour ordonnancer les taches


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR