分别编写计算1~1000的求和线程和计算1~1000平方和线程,并在线程内输出和; 2.编写测试两个线程的程序。
时间: 2024-12-25 13:32:53 浏览: 7
在Java中,我们可以创建两个线程分别计算1到1000的累加和(SumThread)和累乘积(SquareSumThread),并在每个线程内部打印结果。这里是一个简单的示例:
```java
import java.util.concurrent.atomic.AtomicInteger;
public class SumAndSquareSum implements Runnable {
private static AtomicInteger sum = new AtomicInteger(0);
private static AtomicInteger squareSum = new AtomicInteger(0);
// 线程任务:计算1到1000的累加和
public void runSum() {
for (int i = 1; i <= 1000; i++) {
sum.addAndGet(i);
System.out.println("累加和:" + sum.get());
}
}
// 线程任务:计算1到1000的累乘积(实际上这是求平方和,因为乘积是平方的结果)
public void runSquareSum() {
for (int i = 1; i <= 1000; i++) {
squareSum.addAndGet(i * i);
System.out.println("平方和:" + squareSum.get());
}
}
// 主函数用于启动线程
public static void main(String[] args) throws InterruptedException {
Thread sumThread = new Thread(new SumAndSquareSum(), "SumThread");
Thread squareSumThread = new Thread(new SumAndSquareSum(), "SquareSumThread");
sumThread.start();
squareSumThread.start();
// 等待两个线程完成
sumThread.join();
squareSumThread.join();
System.out.println("最终累加和:" + sum.get());
System.out.println("最终平方和:" + squareSum.get());
}
}
```
在这个例子中,`runSum()`和`runSquareSum()`方法实现了计算任务,而`main()`函数启动了两个线程并等待它们完成。注意,由于`AtomicInteger`类的原子性,我们不需要同步这两个共享变量。
阅读全文