用 CountDownLatch 来写个程序算 1!+2!+3!+4!+5!
你可以使用 CountDownLatch 和线程来实现这个程序,以下是一个例子:
import java.util.concurrent.CountDownLatch;
public class FactorialSum {
private static final int N = 5; // 通过计算 1!到 5!
public static void main(String[] args) {
CountDownLatch latch = new CountDownLatch(N);
long sum = 0;
for (int i = 1; i <= N; i++) {
int finalI = i;
new Thread(() -> {
long factorial = calculateFactorial(finalI);
sum += factorial;
latch.countDown();
}).start();
}
try {
latch.await(); // 等待所有线程执行完毕
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Sum of factorials: " + sum);
}
private static long calculateFactorial(int n) {
long factorial = 1;
for (int i = 1; i <= n; i++) {
factorial *= i;
}
return factorial;
}
}
在这个例子中,我们创建了一个 CountDownLatch
对象,并将计数器的初始值设置为 N。然后,在一个循环中创建 N 个线程来计算 1!到 5!的阶乘。每个线程计算完阶乘后,都会调用 latch.countDown()
来减少计数器的值。主线程调用 latch.await()
来等待所有线程执行完毕。当计数器值减少到 0 时,主线程继续执行,打印出阶乘的和。
请注意,由于使用了线程,计算结果的顺序可能会不同。如果需要保持顺序,你可以使用 ExecutorService
来控制线程的执行顺序。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论