Si ha bisogno piu volte di mettere in esecuzione piu task(jobs), e quindi ci viene in aiuto il CountDownLatch.
Tramite esso viene inizializzata una variabile di conteggio e ogni volta che un task viene completato viene fatto diminuire il numero. Al termine dei lavori semplicemente il programma termina con un ‘Println’.
Ecco il codice esempio di progetto:
Main.java
import java.util.concurrent.CountDownLatch;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
CountDownLatch cdl = new CountDownLatch(1);
new ParallelExe(cdl);
try {
cdl.await();
} catch (InterruptedException exc) {
System.out.println(exc);
}
System.out.println("Terminated");
}
}
ParallelExe.java
import java.util.concurrent.CountDownLatch;
public class ParallelExe implements Runnable{
CountDownLatch latch;
public ParallelExe(CountDownLatch cdl) {
// TODO Auto-generated constructor stub
latch = cdl;
this.run();
}
@Override
public void run() {
// TODO Auto-generated method stub
System.out.print("RUN");
latch.countDown();
}
}
Links
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html