有两个线程,线程一的工作任务是计算0-100中偶数的票 加和,线程二的任务是计算0-100中奇数的票加和,主线 程main需要完成0-100的票加和的任务,main中不允许自 行计算0-100的票加和,需要合理调用相应功能的线程完 成它的任务。 写出以上功能需求Java代码。
时间: 2024-10-13 13:05:09 浏览: 5
在Java中,你可以创建两个实现了Runnable接口的内部类,分别代表计算偶数和奇数的票加和,然后将这两个任务交给线程来执行。主线程会创建并启动这两个线程,最后通过join()方法等待它们完成后再获取最终结果。这里是一个简单的示例:
```java
public class Main {
private int totalSumEven = 0;
private int totalSumOdd = 0;
public static void main(String[] args) {
Main main = new Main();
Thread threadEven = new Thread(main::calculateEven);
Thread threadOdd = new Thread(main::calculateOdd);
threadEven.start();
threadOdd.start();
try {
threadEven.join(); // 等待偶数线程完成
threadOdd.join(); // 等待奇数线程完成
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Total sum of even numbers: " + main.totalSumEven);
System.out.println("Total sum of odd numbers: " + main.totalSumOdd);
}
private void calculateEven() {
for (int i = 0; i <= 100; i += 2) {
totalSumEven += i;
}
}
private void calculateOdd() {
for (int i = 1; i <= 100; i += 2) {
totalSumOdd += i;
}
}
}
```
在这个例子中,`calculateEven()`和`calculateOdd()`方法分别在线程中运行,它们更新了`totalSumEven`和`totalSumOdd`变量。主线程在所有线程完成后显示结果。