编写一个有两个线程的程序,第一个线程用来计算1~100之间的奇数及个数,第二个线程用来计算1-100之间的偶数及个数。
时间: 2024-03-01 15:56:32 浏览: 199
好的,以下是一个简单的Java代码实现:
```java
public class OddEvenCounter {
private int oddCount = 0;
private int evenCount = 0;
public void countOdds() {
for (int i = 1; i <= 100; i += 2) {
oddCount++;
}
System.out.println("奇数个数:" + oddCount);
}
public void countEvens() {
for (int i = 2; i <= 100; i += 2) {
evenCount++;
}
System.out.println("偶数个数:" + evenCount);
}
public static void main(String[] args) {
OddEvenCounter counter = new OddEvenCounter();
Thread t1 = new Thread(() -> counter.countOdds());
Thread t2 = new Thread(() -> counter.countEvens());
t1.start();
t2.start();
try {
t1.join();
t2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("程序结束");
}
}
```
在上面的代码中,我们创建了一个名为 `OddEvenCounter` 的类,其中包含了两个方法 `countOdds` 和 `countEvens`,用于分别计算奇数和偶数的个数,并将结果存储在实例变量 `oddCount` 和 `evenCount` 中。
然后,我们创建了一个 `OddEvenCounter` 的实例 `counter`,并创建了两个线程 `t1` 和 `t2`,分别调用 `counter` 的 `countOdds` 和 `countEvens` 方法。最后,我们启动了这两个线程,等待它们完成后输出结果。
注意,由于我们使用了共享变量 `oddCount` 和 `evenCount`,因此需要注意线程安全问题。在这个简单的例子中,我们没有使用任何同步机制,因此可能会出现竞争条件。在实际应用中,应该使用锁或其他同步机制来保证线程安全。
阅读全文