编写一个有两个线程的程序,第一个线程用来计算2到100之间的素数的个数,第二个线程用来计算100到200之间素数的个数,最后输出结果。Java
时间: 2024-03-09 10:47:23 浏览: 68
第9章多线程
下面是一个使用Java实现的有两个线程的程序,其中第一个线程用来计算2到100之间的素数的个数,第二个线程用来计算100到200之间素数的个数,最后输出结果:
```java
public class PrimeNumberThread extends Thread {
private int startNum;
private int endNum;
private int count;
public PrimeNumberThread(int startNum, int endNum) {
this.startNum = startNum;
this.endNum = endNum;
this.count = 0;
}
@Override
public void run() {
for (int i = startNum; i <= endNum; i++) {
if (isPrime(i)) {
count++;
}
}
}
public int getCount() {
return count;
}
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;
}
}
public class Main {
public static void main(String[] args) {
PrimeNumberThread thread1 = new PrimeNumberThread(2, 100);
PrimeNumberThread thread2 = new PrimeNumberThread(101, 200);
thread1.start();
thread2.start();
try {
thread1.join();
thread2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
int count = thread1.getCount() + thread2.getCount();
System.out.println("2到200之间素数的个数为: " + count);
}
}
```
在这个程序中,我们首先定义了一个名为PrimeNumberThread的线程类,它包含了计算素数的逻辑。在run方法中,我们使用isPrime方法判断每个数字是否为素数,如果是,就将计数器count加1。在主函数中,我们创建了两个PrimeNumberThread线程,并分别传入不同的范围,然后启动这两个线程。最后,我们使用join方法来等待两个线程执行完毕,并将它们的计数器相加,输出结果。
需要注意的是,这段代码并不是线程安全的,如果需要在多线程环境中使用,需要考虑线程安全问题。
阅读全文