请编写多线程程序,在主线程 main 之外,定义两个子线程,分别用来找出某个整数区间内的所有素数。程序运行时,主线程 main 创建子线程并向其传递两个整型的参数,子线程找出这两个整数之间的所有素数,并输出。请利用实现 Runnable接口这种方式来实现多线程。
时间: 2023-12-06 15:45:07 浏览: 80
多线程实现程序
以下是 Java 代码示例:
```java
public class PrimeFinder implements Runnable {
private int start;
private int end;
public PrimeFinder(int start, int end) {
this.start = start;
this.end = end;
}
@Override
public void run() {
for (int i = start; i <= end; i++) {
if (isPrime(i)) {
System.out.println(i);
}
}
}
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) {
int start = 1;
int end = 100;
PrimeFinder primeFinder1 = new PrimeFinder(start, end/2);
PrimeFinder primeFinder2 = new PrimeFinder(end/2 + 1, end);
Thread thread1 = new Thread(primeFinder1);
Thread thread2 = new Thread(primeFinder2);
thread1.start();
thread2.start();
}
}
```
在这个例子中,我们定义了一个 PrimeFinder 类来实现 Runnable 接口,并在该类的 run() 方法中查找指定区间内的所有素数。在主函数中,我们创建两个 PrimeFinder 实例,分别对应于区间的两个半部分。我们还创建了两个线程 thread1 和 thread2,分别与这两个 PrimeFinder 实例相关联,并启动它们。这将导致线程并行运行,从而加快素数查找的速度。
阅读全文