diff --git a/core-java-modules/core-java-concurrency-advanced-3/src/main/java/com/baeldung/workstealing/PrimeNumbers.java b/core-java-modules/core-java-concurrency-advanced-3/src/main/java/com/baeldung/workstealing/PrimeNumbers.java index 5c1eddbf68..b31ec85cd4 100644 --- a/core-java-modules/core-java-concurrency-advanced-3/src/main/java/com/baeldung/workstealing/PrimeNumbers.java +++ b/core-java-modules/core-java-concurrency-advanced-3/src/main/java/com/baeldung/workstealing/PrimeNumbers.java @@ -14,20 +14,21 @@ public class PrimeNumbers extends RecursiveAction { private int granularity; static final List GRANULARITIES = Arrays.asList(1, 10, 100, 1000, 10000); - private AtomicInteger noOfPrimeNumbers = new AtomicInteger(); + private AtomicInteger noOfPrimeNumbers; - PrimeNumbers(int lowerBound, int upperBound, int granularity) { + PrimeNumbers(int lowerBound, int upperBound, int granularity, AtomicInteger noOfPrimeNumbers) { this.lowerBound = lowerBound; this.upperBound = upperBound; this.granularity = granularity; + this.noOfPrimeNumbers = noOfPrimeNumbers; } PrimeNumbers(int upperBound) { - this(1, upperBound, 100); + this(1, upperBound, 100, new AtomicInteger(0)); } - private PrimeNumbers(int lowerBound, int upperBound) { - this(lowerBound, upperBound, 100); + private PrimeNumbers(int lowerBound, int upperBound, AtomicInteger noOfPrimeNumbers) { + this(lowerBound, upperBound, 100, noOfPrimeNumbers); } private List subTasks() { @@ -36,7 +37,7 @@ public class PrimeNumbers extends RecursiveAction { for (int i = 1; i <= this.upperBound / granularity; i++) { int upper = i * granularity; int lower = (upper - granularity) + 1; - subTasks.add(new PrimeNumbers(lower, upper)); + subTasks.add(new PrimeNumbers(lower, upper, noOfPrimeNumbers)); } return subTasks; } @@ -81,4 +82,4 @@ public class PrimeNumbers extends RecursiveAction { public int noOfPrimeNumbers() { return noOfPrimeNumbers.intValue(); } -} +} \ No newline at end of file diff --git a/core-java-modules/core-java-concurrency-advanced-3/src/test/java/com/baeldung/workstealing/PrimeNumbersUnitTest.java b/core-java-modules/core-java-concurrency-advanced-3/src/test/java/com/baeldung/workstealing/PrimeNumbersUnitTest.java index 7fa0bacc9c..66bc677345 100644 --- a/core-java-modules/core-java-concurrency-advanced-3/src/test/java/com/baeldung/workstealing/PrimeNumbersUnitTest.java +++ b/core-java-modules/core-java-concurrency-advanced-3/src/test/java/com/baeldung/workstealing/PrimeNumbersUnitTest.java @@ -1,6 +1,5 @@ package com.baeldung.workstealing; - import org.junit.Test; import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.runner.Runner; @@ -11,6 +10,7 @@ import org.openjdk.jmh.runner.options.OptionsBuilder; import java.util.concurrent.Executors; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Logger; import static org.junit.Assert.fail; @@ -59,7 +59,7 @@ public class PrimeNumbersUnitTest { } private void stealCountInfo(StringBuilder info, int granularity, ForkJoinPool forkJoinPool) { - PrimeNumbers primes = new PrimeNumbers(1, 10000, granularity); + PrimeNumbers primes = new PrimeNumbers(1, 10000, granularity, new AtomicInteger(0)); forkJoinPool.invoke(primes); forkJoinPool.shutdown();