package threadPool; public class ComputerThread<T, S> extends Thread { Repository<T> tasks = null; Repository<S> results = null; Compute<T, S> function = null; public ComputerThread(Repository<T> tasks, Repository<S> results, Compute<T, S> function) { this.tasks = tasks; this.results = results; this.function = function; return; } public void run() { while (true) { T task = tasks.extract(); try { int random = ((int) (Math.random() * 5000.00)); System.out.println("Thread " + this.getName() + " inizio calcolo"); sleep(random); S result = function.compute(task); System.out .println("Thread " + this.getName() + " fine calcolo"); results.insert(result); } catch (InterruptedException e) { System.out.println("Calcolo del thread " + this.getName() + " interrotto!"); } System.out.println("Thread " + this.getName() + " computed task " + task); } } }