我在 oracle 博客上练习了这个关于之前发生的问题,我有一个问题是如何在 CyclicBarrier 中获取/访问屏障动作的输出。
博客链接
编码
public class CBTest {
private List<Integer> results = Collections.synchronizedList(new ArrayList<>());
class Calculator extends Thread {
CyclicBarrier cb;
int param;
public Calculator(CyclicBarrier cb, int param) {
this.cb = cb;
this.param = param;
}
public void run() {
try {
results.add(param);
System.out.println("going to await");
cb.await();
} catch (InterruptedException | BrokenBarrierException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
void doCalculation() {
CyclicBarrier cb = new CyclicBarrier(2, () -> {
var ans = results.stream().mapToInt(v -> v.intValue()).sum();
System.out.println("ANS IS "+ans);
});
new Calculator(cb, 2).start();
new Calculator(cb, 3).start();
}
public static void main(String[] args) {
var test = new CBTest();
test.doCalculation();
}
}
请告诉我如何获得ans
main方法中循环障碍动作的值?