|
||
---|---|---|
.. | ||
README.md |
README.md
Problem 7.2: Implementation of ExecutorCompletionService
a) Implement the following simplified version of class java.util.concurrent.ExecutorCompletionService
:
public class SimpleExecutorCompletionService<ResultType> {
public SimpleExecutorCompletionService(ExecutorService ex) { … }
// Submit task to ex for execution:
public Future<ResultType> submit(Callable<ResultType> task) { … }
// Fetch result of some finished task if available (else null):
public Future<ResultType> poll() { … }
}
Use class SimpleExecutorCompletionServiceTester
oin the file server to test your class. If your
implementation is correct, the numbers printed with "… received result" should appear in mostly1
ascending order. Method Future.isDone()
could be helpful for your implementation.
-
This order is not really guaranteed: While the "internal" length of each task would indeed produce this order, the total execution time of a task may be longer due to external delays by the thread pool (e.g. how long it takes to start a submitted task) and by other threads (e.g. preemption). ↩︎