2 arguments : lit sur le fichier indiqué en premier argument et écrit sur le fichier indiqué
en second argument
Le codage sera delocalisé dans la classe Rot13OutputStream qui dérivera de
FilterOutputStream. On choisira un algorithme de chiffrement symétrique et simpliste (e.g.
rot13).
2.2 Les Threads
Pour illustrer les mécanismes de synchronisation entre threads, on se propose de développer une
petite application producteur/consommateur : un thread producer crée des messages (e.g. la date
courante) et les place dans une file d'attente (e.g. un Vector). Un thread consumer retire un
message de la file d'attente et l'affiche. Pour rendre l'application plus réaliste on impose :
que la file d'attente soit borné. Lorsque la file d'attente est pleine le producteur se met en
attente et lorsqu'elle est vide le consommateur se met en attente.
que l'on puisse imposer un debit différent au producteur et au consommateur (chaque
thread s'endormira (sleep) entre chaque iteration)
1. Ecrivez les classes Producer et Consumer.
La classe Producer sera de la forme :
public class Producer implements Runnable {
...
/**
* Create a new Producer
*
* @param maxQueueSize the size of the queue
* @param sleepValue the time to sleep between each iteration
*/
public Producer(int maxQueueSize, int sleepValue) {...}
/**
* Start the thread
*/
public void start() {...}
/**
* The thread body
*/
public void run() {
...
while(true) { ...}
...
}
/**
* Put a new message in the queue