package threadPoolConcurrencyDue;
 
import java.util.concurrent.LinkedBlockingQueue;
 
public class Task<T,R> implements Runnable {
 
	Compute<T,R> fun = null; 
	T task = null; 
	LinkedBlockingQueue<R> results = null; 
 
	public Task(T task, Compute<T,R>fun, LinkedBlockingQueue<R> 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;
	}
 
}