diff --git a/src/pp.09.02-StructuredConcurrency/src/main/java/pp/structuredPrime.java b/src/pp.09.02-StructuredConcurrency/src/main/java/pp/structuredPrime.java new file mode 100644 index 0000000..aabfa4e --- /dev/null +++ b/src/pp.09.02-StructuredConcurrency/src/main/java/pp/structuredPrime.java @@ -0,0 +1,14 @@ +import java.util.concurrent.StructuredTaskScope.Joiner; + +BigInteger parallelPrime(int bitLength) throws InterruptedException { + try (var scope = StructuredTaskScope.open(Joiner.anySuccessfulResultOrThrow())) { + for (var i = 0; i < ForkJoinPool.commonPool().getParallelism(); i++) { + scope.fork(() -> BigInteger.probablePrime(bitLength, ThreadLocalRandom.current())); + } + return scope.join(); + } +} + +void main() throws InterruptedException { + IO.println(parallelPrime(4096)); +}