IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Concurrence et multi-thread Java Discussion :

[Thread]multitâche


Sujet :

Concurrence et multi-thread Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 47
    Par défaut [Thread]multitâche
    BONJOUR

    Quelq'un pourrais t-il me montré un programme très très simple qui concerne le multitâche ( un programme en console ) ?


    merci

  2. #2
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    public class Test extends Thread{
     
    	private int id;
     
    	public Test(int pId){
    		id=pId;
    	}
    	public void run() {
    		while(true){
    			System.out.println("id de la tache="+id);
    			Thread.yield();
    		}
    	}
     
    	public static void main(String[] args) {
    		new Test(1).start();
    		new Test(2).start();
    		new Test(3).start();
        }
    }
    Pour jouer avec les threads il faut etendre la classe Thread et overrider la méthode run.
    Après tu instancies la classe et tu appelles la méthode start qui elle même appellera run

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 47
    Par défaut
    Ok j'ai compris le principe mais si par exemple
    new Test(1).start(); // doit s'éxécuter toute les 2sec
    new Test(2).start(); // doit s'éxécuter toute les 1sec
    new Test(3).start(); // doit s'éxécuter toute les 5sec

    la je ne sais pas comment faire

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 303
    Par défaut
    dans le run tu fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    try { sleep(periode)} catch(InterruptedException e) {};
    avec periode en millisecondes

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 27
    Par défaut
    new Test(1).start(); // doit s'éxécuter toute les 2sec
    new Test(2).start(); // doit s'éxécuter toute les 1sec
    new Test(3).start(); // doit s'éxécuter toute les 5sec
    Nous allons faire

    new Test(1).start(); // doit s'éxécuter toute les 1sec
    new Test(2).start(); // doit s'éxécuter toute les 2sec
    new Test(3).start(); // doit s'éxécuter toute les 3sec

    try { sleep(periode)} catch(InterruptedException e) {};
    Tu doit le mettre de le while de run

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
       public void run() {
          while(true){
    try { sleep((id*1000))} catch(InterruptedException e) {}; 
             System.out.println("id de la tache="+id);
             Thread.yield();
          }
       }

    Par contre moi j'aurais une questions, dans ce cas ci , j'aimerais stoper chacune des tache lancé a chaque pression de la touche entrer.

    donc:

    1er pression de entrer
    Test(1) ce stop,
    2eme pression de entrer
    Test(2) ce stop,

    .........
    MERCI

  6. #6
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    public class Test extends Thread{ 
     
       private int id; 
       private boolean stopped;
     
       public Test(int pId){ 
          id=pId; 
       } 
       public void run() { 
          while (!stopped) { 
             try {
                 sleep(id*1000);
             } catch (InterruptedException e) {}; 
     
             System.out.println("id de la tache="+id); 
             Thread.yield(); 
          } 
       } 
     
       public void stop() {
           stopped = true;
       }
     
       public static void main(String[] args) {
          int[] pauses = {2, 1, 5};
          Thread[] threads = new Thread[pauses.length];
     
          for (int i = 0; i < threads.length; i++) {
              threads[i] = new Test(pauses[i]);
              threads[i].start();
          }
     
          for (int i = 0; i < threads.length; i++) {
              // attente pression de la touche entrer
              ...
              threads[i].stop();
          }
    }

  7. #7
    Membre Expert
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Par défaut
    Si le sujet est résolu, merci de le signaler en cliquant sur
    Les Règles du Forum

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/05/2014, 12h23
  2. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  3. Programmer des threads
    Par haypo dans le forum C
    Réponses: 6
    Dernier message: 02/07/2002, 13h53
  4. Réponses: 5
    Dernier message: 12/06/2002, 15h12
  5. [Kylix] Pb de Thread !!
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 25/04/2002, 13h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo