Lab 5
Chciałbym całkowicie zastąpić scenariusz o Future'ach i ForkJoin nową wersją, skupiającą się głównie na CompletableFuture'ach. To API jest dużo nowsze i - odnoszę wrażenie - znacznie popularniejsze obecnie od starego, a poza tym można na jego przykładzie wytłumaczyć popularny obecnie paradygmat programowania asynchronicznego:
https://docs.scala-lang.org/overviews/core/futures.html https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await https://docs.swift.org/swift-book/LanguageGuide/Concurrency.html https://rust-lang.github.io/async-book/01_getting_started/04_async_await_primer.html https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/await
Zadanie punktowane to byłoby przepisanie przykładu BankDatabase na wersję asynchroniczną, korzystającą z CompletableFuture.
W treści scenariusza (która jeszcze nadal powstaje) potrzebujemy wytłumaczyć, czym różnią się od siebie metody thenApply (map w językach funkcyjnych) i thenCompose (flatMap), a także jak się do nich mają wersje async.
Obsługą wyjątków raczej bym się nie przejmował.
Jako przykład dołączyłem też uproszczoną wersję klasy Future, która fajnie pokazuje zastosowanie kolejek synchronicznych z poprzednich zajęć.