From 9ec2dae73f35cf161730666a57ce257264d6e4b0 Mon Sep 17 00:00:00 2001 From: Luca Conte Date: Wed, 7 May 2025 22:09:48 +0200 Subject: [PATCH] add assignment b --- u07-2/README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/u07-2/README.md b/u07-2/README.md index 506d20d..a65f62f 100644 --- a/u07-2/README.md +++ b/u07-2/README.md @@ -12,13 +12,22 @@ public class SimpleExecutorCompletionService { // Fetch result of some finished task if available (else null): public Future 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 mostly[^1] ascending order. Method `Future.isDone()` could be helpful for your implementation. +b) Add the following method to your class: +```java + // Fetch result of some finished task (blocks until some has finished): + public Future take() throws InterruptedExecution { … } +``` + +Note that you have to change the submit method from (a), too, so that when a task finishes, the +threads waiting in take for a task to finish are notified. Use class +`SimpleExecutorCompletionServiceTester_with_take` on the server to test your class. + [^1]: 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). \ No newline at end of file