Core threadpool implementation examples (#588)

This commit is contained in:
Sergey Petunin
2016-08-08 19:13:44 +05:00
committed by Grzegorz Piwowarek
parent 009e0045e2
commit 1121a6ca29
3 changed files with 187 additions and 0 deletions
@@ -0,0 +1,22 @@
package com.baeldung.threadpool;
import java.util.concurrent.ForkJoinTask;
import java.util.concurrent.RecursiveTask;
import java.util.stream.Collectors;
public class CountingTask extends RecursiveTask<Integer> {
private final TreeNode node;
public CountingTask(TreeNode node) {
this.node = node;
}
@Override
protected Integer compute() {
return node.value + node.children.stream()
.map(childNode -> new CountingTask(childNode).fork())
.collect(Collectors.summingInt(ForkJoinTask::join));
}
}
@@ -0,0 +1,19 @@
package com.baeldung.threadpool;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class TreeNode {
int value;
Set<TreeNode> children;
public TreeNode(int value, TreeNode... children) {
this.value = value;
this.children = new HashSet<>();
this.children.addAll(Arrays.asList(children));
}
}