<div class="page">
<div class="cover text-center">
<img class="mx-auto" src=/itb/images/logo_mislata.png alt="logo">
# Consume Line
<div class="text-end fit-content ms-auto my-3 mt-auto pt-3">
<p><strong>Autor:</strong> Joan Puigcerver Ibáñez</p>
<p><strong>Correu electrònic:</strong> j.puigcerveribanez@edu.gva.es</p>
<p><strong>Curs:</strong> 2024/2025</p>
</div>
<div>
<p class="fw-bold mb-0">Llicència: BY-NC-SA</p>
<p class="d-none d-md-block">(Reconeixement - No Comercial - Compartir Igual)</p>
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.ca" target="_blank">
<img class="mx-auto" src="/itb/images/license.png" alt="Licence"/>
</a>
</div><!--license-->
</div><!--cover-->
</div><!--page-->
{:toc}
# Objectius
Desenvolupar una aplicació que llance varios processos i espere a que acaben.
Tot el codi font ha d'estar en el package __ud1.exercises__.
# Observacions
En aquest exemple s'utiliza un script de Bash, per tant, cal executar-lo mitjançant el WSL
## ConsumeLineMultiProcess
Crea el programa __ConsumeLineMultiProcess__ que llance diferents processos
utilitzant el programa <a href="/itb/DAM-PSP/files/files/ud1/consume_line.sh" download="consume_line.sh">consume_line.sh</a>
per diferents fitxers.
```bash
FILENAME=$1
i=0
DELAY=1
if [ $# -gt 1 ]; then
DELAY=$2
fi
cat $FILENAME | while read line
do
echo "Process $$ - Line $i: $line"
((i++))
sleep $DELAY
done
```
Aquest script llegeix les línies d'un fitxer de text i les mostra per __stdout__. Aquesta eixida s'ha de mostrar per
__stdout__ del nostre programa Java. Per fer-ho, podem utilitzar la funció
[ProcessBuilder inheritIO()](https://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html#inheritIO())
Crea els processos amb __consume_line.sh__ amb els següents paràmetres:
- __Fitxer__: <a href="/itb/DAM-PSP/files/files/ud1/colors.txt" download="colors.txt">colors.txt</a>, __Delay__: 3 segons.
- __Fitxer__: <a href="/itb/DAM-PSP/UD1/practices/concessionari.csv" download="concessionari.csv">concessionari.csv</a>, __Delay__: 1 segons.
- __Fitxer__: <a href="/itb/DAM-PSP/files/files/ud1/lorem.txt" download="lorem.txt">lorem.txt</a>, __Delay__: 2 segons.
```warning
Situa tots els fitxers al directori <strong>/files/ud1/</strong> a partir de l'arrel del teu projecte.
```
_Example en Windows (WSL):_ Si guardeu _consume_line.sh_ i _colors.txt_ en la carpeta _files/_ en l'arrel del vostre projecte.
- Si utilitzeu Ubuntu, no cal utilitzar el WSL.
```java
ProcessBuilder pb1 = new ProcessBuilder("wsl.exe", "files/ud1/consume_line.sh", "files/ud1/colors.txt", "3").inheritIO();
```
Aquest lloc web utilitza galetes per millorar l'experiència de l'usuari