. 编写一个java程序,该程序由两个线程组成,第一个线程用来计算2~1000之间的质数个数,第二个线程用来计算1000~2000之间的质数个数。
时间: 2024-03-25 20:40:12 浏览: 15
下面是一个简单的Java程序,其中包含两个线程,分别计算2~1000和1000~2000之间的质数个数:
```java
public class PrimeNumberCounter {
public static void main(String[] args) {
// 创建两个线程
Thread t1 = new Thread(new PrimeCounter(2, 1000));
Thread t2 = new Thread(new PrimeCounter(1000, 2000));
// 启动两个线程
t1.start();
t2.start();
try {
// 等待两个线程执行完毕
t1.join();
t2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
// 输出结果
System.out.println("2~1000之间的质数个数:" + PrimeCounter.getCount1());
System.out.println("1000~2000之间的质数个数:" + PrimeCounter.getCount2());
}
}
class PrimeCounter implements Runnable {
private int start;
private int end;
private static int count1 = 0;
private static int count2 = 0;
public PrimeCounter(int start, int end) {
this.start = start;
this.end = end;
}
public void run() {
for (int i = start; i <= end; i++) {
if (isPrime(i)) {
if (start == 2) {
count1++;
} else {
count2++;
}
}
}
}
public static int getCount1() {
return count1;
}
public static int getCount2() {
return count2;
}
private boolean isPrime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
}
```
在这个程序中,我们创建了两个线程,分别计算2~1000和1000~2000之间的质数个数。每个线程的计算过程都由`PrimeCounter`类的`run()`方法完成。该方法使用`isPrime()`方法判断一个数是否为质数,如果是,则将计数器加1。最后,我们使用`getCount1()`和`getCount2()`方法获取两个线程计算的结果,并输出到控制台。注意,为了保证线程安全,我们将计数器定义为静态变量。