Add Fork/Join design pattern (#3227) - #3550
Conversation
PR SummaryImplements the Fork/Join concurrency pattern using a parallel array summation example. Adds a standalone module fork-join with App, SumTask, ForkJoinSumCalculator, and unit tests, plus documentation. Changes
autogenerated by presubmit.ai |
There was a problem hiding this comment.
🚨 Pull request needs attention.
Review Summary
Commits Considered (1)
- 0f14977: Add fork-join pattern implementation
Files Processed (7)
- fork-join/README.md (1 hunk)
- fork-join/pom.xml (1 hunk)
- fork-join/src/main/java/com/iluwatar/forkjoin/App.java (1 hunk)
- fork-join/src/main/java/com/iluwatar/forkjoin/ForkJoinSumCalculator.java (1 hunk)
- fork-join/src/main/java/com/iluwatar/forkjoin/SumTask.java (1 hunk)
- fork-join/src/test/java/com/iluwatar/forkjoin/ForkJoinSumCalculatorTest.java (1 hunk)
- fork-join/src/test/java/com/iluwatar/forkjoin/SumTaskTest.java (1 hunk)
Actionable Comments (1)
-
fork-join/src/main/java/com/iluwatar/forkjoin/SumTask.java [50-55]
possible bug: "Guard against invalid index range in SumTask"
Skipped Comments (2)
-
fork-join/src/main/java/com/iluwatar/forkjoin/App.java [28-28]
performance: "High memory usage in demo due to full array materialization"
-
fork-join/pom.xml [41-41]
maintainability: "Main class configuration in assembly plugin"
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #3550 +/- ##
============================================
+ Coverage 83.24% 83.57% +0.33%
- Complexity 4025 4225 +200
============================================
Files 1060 1110 +50
Lines 14246 14950 +704
Branches 686 708 +22
============================================
+ Hits 11859 12495 +636
- Misses 2100 2162 +62
- Partials 287 293 +6 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Signed-off-by: SandhyaDevadiga <sandhyadevadiga8197@gmail.com>
There was a problem hiding this comment.
✅ LGTM!
Review Summary
Commits Considered (1)
- f5fe108: Add input validation for start > end in SumTask
Signed-off-by: SandhyaDevadiga sandhyadevadiga8197@gmail.com
Files Processed (2)
- fork-join/src/main/java/com/iluwatar/forkjoin/SumTask.java (1 hunk)
- fork-join/src/test/java/com/iluwatar/forkjoin/SumTaskTest.java (1 hunk)
Actionable Comments (0)
Skipped Comments (1)
-
fork-join/src/main/java/com/iluwatar/forkjoin/SumTask.java [37-44]
possible bug: "Guard against end exceeding array length."
iluwatar
left a comment
There was a problem hiding this comment.
You need to add the new module to the parent pom.xml, otherwise CI does not build it
There was a problem hiding this comment.
✅ LGTM!
Review Summary
Commits Considered (1)
- 0a403c3: Add fork-join module to parent pom.xml
Files Processed (1)
- pom.xml (1 hunk)
Actionable Comments (0)
Skipped Comments (1)
-
pom.xml [141-141]
maintainability: "Introduce a new module to the Maven reactor"
There was a problem hiding this comment.
🚨 Pull request needs attention.
Review Summary
Commits Considered (1)
- 4a9ef8f: Add missing assertThrows import in SumTaskTest
Files Processed (1)
- fork-join/src/test/java/com/iluwatar/forkjoin/SumTaskTest.java (1 hunk)
Actionable Comments (1)
-
fork-join/src/test/java/com/iluwatar/forkjoin/SumTaskTest.java [81-85]
possible issue: "Constructor validation for invalid ranges"
Skipped Comments (6)
-
fork-join/src/test/java/com/iluwatar/forkjoin/SumTaskTest.java [13-22]
readability: "Clarify end-exclusive semantics in tests"
-
fork-join/src/test/java/com/iluwatar/forkjoin/SumTaskTest.java [25-35]
test: "Boundary test for threshold"
-
fork-join/src/test/java/com/iluwatar/forkjoin/SumTaskTest.java [39-46]
readability: "End index semantics in documentation"
-
fork-join/src/test/java/com/iluwatar/forkjoin/SumTaskTest.java [50-57]
maintainability: "Explicit empty-range validation"
-
fork-join/src/test/java/com/iluwatar/forkjoin/SumTaskTest.java [60-67]
testing: "Single-element range behavior"
-
fork-join/src/test/java/com/iluwatar/forkjoin/SumTaskTest.java [70-78]
performance: "Performance considerations for large input"
There was a problem hiding this comment.
✅ LGTM!
Review Summary
Commits Considered (1)
- f96697f: Format fork-join code with Spotless
Files Processed (4)
- fork-join/src/main/java/com/iluwatar/forkjoin/App.java (1 hunk)
- fork-join/src/main/java/com/iluwatar/forkjoin/ForkJoinSumCalculator.java (1 hunk)
- fork-join/src/main/java/com/iluwatar/forkjoin/SumTask.java (1 hunk)
- fork-join/src/test/java/com/iluwatar/forkjoin/SumTaskTest.java (1 hunk)
Actionable Comments (0)
Skipped Comments (1)
-
fork-join/src/main/java/com/iluwatar/forkjoin/SumTask.java [34-42]
maintainability: "Guard against null input in SumTask constructor."
Fixes #3227
What this PR does
Implements the Fork/Join concurrency pattern using a parallel array
summation example.
Files added
SumTask.java— RecursiveTask that splits the array and sums in parallelForkJoinSumCalculator.java— Wrapper class that manages the ForkJoinPoolApp.java— Demo showing parallel sum of 10 million numbersSumTaskTest.java— 6 unit tests for the recursive taskForkJoinSumCalculatorTest.java— 5 unit tests for the calculatorREADME.md— Pattern explanation with examples and diagramspom.xml— Maven module configuration