package threadPoolConcurrencyDue; import java.util.concurrent.LinkedBlockingQueue; public class Task implements Runnable { Compute fun = null; T task = null; LinkedBlockingQueue results = null; public Task(T task, Computefun, LinkedBlockingQueue results) { this.fun = fun; this.task = task; this.results = results; } public void run() { R result = fun.compute(task); try { results.put(result); } catch (InterruptedException e) { e.printStackTrace(); } return; } }