Exercices dirigés NSY102


Les "Threads"


Depuis Bluej, l'archive à télécharger ed_thread.jar (puis ouvrir non_bluej ...., habituel)

1) Faites les 3 premiers exercices de cet énoncé, (l'original ici http://www.ulb.ac.be/di/ssd/lvbegin/td_concur/tp7.pdf)

 

2) Complétez le serveur Web vu en cours, paquetage serveurWebVuEnCours Classe Main ligne 8

Avec

1) une instance "simple" de cette implémentation

import java.util.concurrent.Executor;
public class ThreadExecutor implements Executor{

public void execute(Runnable r){
  new Thread(r).start();

}
}

 

Vérifiez à chaque étape, depuis votre navigateur http://localhost/index.html

Notez qu'il est préférable d'exécuter ce serveur depuis la console
répertoire ed_thread> java -cp . serveurWebVuEnCours.Main

 

2) Cette implémentation ...

public class SerialExecutor implements Executor {
  private final Queue<Runnable> tasks = new LinkedBlockingQueue<Runnable>();
  private Runnable active;
  final Executor executor;
  
  public  SerialExecutor(Executor executor) {
    this.executor = executor;
  }
  
  public synchronized void execute(final Runnable r) {
    tasks.offer(new Runnable() {
         public void run() {
             try {
                 r.run();
             } finally {
                 scheduleNext();
             }
         }
     });
     if (active == null) {
         scheduleNext();
     }
   }

   protected synchronized void scheduleNext() {
       if ((active = tasks.poll()) != null) {
           executor.execute(active);
       }
   }
 }

3) Executors.newFixedThreadPool(100)

4) Executors.newCachedThreadPool()

5) Enfin avec la classe ThreadPool

 

Vérifiez (bis) depuis votre navigateur http://localhost/index.html

Notez qu'il est préférable d'exécuter ce serveur depuis la console
répertoire ed_thread> java -cp . serveurWebVuEnCours.Main

 

4) Lire le source et Vérifiez le "bon fonctionnement" du Pattern Scheduler, paquetage schedulerPattern
(extrait de
http://www.wiley.com/compbooks/catalog/25839-3.htm)