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

  FORUM HardWare.fr
  Programmation
  Java

  questions sur les threads

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

questions sur les threads

n°430062
karim63
Posté le 17-06-2003 à 04:21:56  profilanswer
 

Quand un objet qui extends ou implement thread est en pause, est il possible d'executer une methode de cet objet ?
Par exemple de l'exterieur de cet objet avec un autre thread.
 
 
Dans le code qui suit je ne comprends pas le sens de Thread.sleep(1000)
Je comprends pas sur quoi la methode s'execute.
 
http://java.sun.com/docs/books/tut [...] clock.html
 

Code :
  1. public class Clock extends Applet implements Runnable {
  2.     private Thread clockThread = null;
  3.     public void start() {
  4.         if (clockThread == null) {
  5.             clockThread = new Thread(this, "Clock" );
  6.             clockThread.start();
  7.         }
  8.     }
  9.     public void run() {
  10.         Thread myThread = Thread.currentThread();
  11.         while (clockThread == myThread) {
  12.             repaint();
  13.             try {
  14.                 Thread.sleep(1000);
  15.             } catch (InterruptedException e){
  16.             // the VM doesn't want us to sleep anymore,
  17.             // so get back to work
  18.             }
  19.         }
  20.     }
  21.     public void paint(Graphics g) {
  22.         // get the time and convert it to a date
  23.         Calendar cal = Calendar.getInstance();
  24.         Date date = cal.getTime();
  25.         // format it and display it
  26.         DateFormat dateFormatter = DateFormat.getTimeInstance();
  27.         g.drawString(dateFormatter.format(date), 5, 10);
  28.     }
  29.     // overrides Applet's stop method, not Thread's
  30.     public void stop() {
  31.         clockThread = null;
  32.     }
  33. }


 
 
Pourquoi c'est pas myThread.sleep(1000) a la place ?
 
Merci  :hello:


Message édité par karim63 le 17-06-2003 à 04:22:55
mood
Publicité
Posté le 17-06-2003 à 04:21:56  profilanswer
 

n°430076
kadreg
profil: Utilisateur
Posté le 17-06-2003 à 07:58:13  profilanswer
 

karim63 a écrit :


Dans le code qui suit je ne comprends pas le sens de Thread.sleep(1000)
Je comprends pas sur quoi la methode s'execute.


 
http://java.sun.com/j2se/1.4.1/doc [...] hread.html
 
sleep est une méthode statique. Cela signifie qu'elle ne s'appelle pas sur un objet particulier, mais sur une classe (ici java.lang.Thread). Elle n'a pas accès éléments non statique (les méthodes et attributs) dans la classe.  
 
Cela permet de mettre des traitements qui ne sont pas de l'ordre d'un objet particulier, mais qui impactent toutes les instances d'une certaine classe.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°430081
benou
Posté le 17-06-2003 à 08:33:33  profilanswer
 

karim63 a écrit :

Quand un objet qui extends ou implement thread est en pause, est il possible d'executer une methode de cet objet ?
Par exemple de l'exterieur de cet objet avec un autre thread.


bha oui ... à moins qu'elles soit synchronizée que le thread qui dort soit en pause dans une méthode synchronizée aussi


---------------
ma vie, mon oeuvre - HomePlayer
n°430225
BifaceMcLe​OD
The HighGlandeur
Posté le 17-06-2003 à 11:17:24  profilanswer
 

Attention, karim, ne confonds pas le thread proprement dit, à l'exécution, et la localisation du code à exécuter dans ton programme.
 
Tant qu'un thread est endormi, il n'exécutera aucun code. C'est clair.
 
Maintenant, le fait qu'une méthode soit dans une sous-classe de Thread n'empêche en rien qu'un autre thread (qui n'est pas une instance de cette classe) ne puisse pas l'appeler.. Donc, un autre thread -- voire le thread du main -- peut tout à fait appeler une méthode de la sous-classe de Thread, même si toutes les instances de cette sous-classes sont des threads endormis.
Et c'est ce thread-là, celui qui appelle la méthode, qui va exécuter la méthode, évidemment.
 
Autrement dit, le thread qui appelle la méthode ne "demande" pas au thread endormi d'exécuter cette méthode, il l'exécute lui-même. Bref, c'est un simple appel de fonction. Plus simple et plus logique, non ?

n°430384
karim63
Posté le 17-06-2003 à 13:26:11  profilanswer
 

ok merci, c'est ce que je voulais savoir  :)


Message édité par karim63 le 17-06-2003 à 13:26:26

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

  questions sur les threads

 

Sujets relatifs
[DOMINO] Créer une copie de la vue Discussion ThreadsQuestions sur access etc ...
Deux questions sur DBGrid[C/C++] Threads > mutual exclusions, critical sections....
2 questions : gestion des exceptions et paramètres des fonctionsQuestions sur DirectMusic
[Threads] A t'on un controle quelconque sur le CPU utilise ?[html/php/css/...]Questions relatives à la construction de mon site
[PDF]{Important} Quelques questions sur PDF+PHP et PDF+HTML[MFC] threads et voir autres questions au 7ème message
Plus de sujets relatifs à : questions sur les threads


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