请编写java多线程程序,在主线程 main 之外,定义两个子线程,分别用来找出某个整数区间内的所有素数。程序运行时,主线程 main 创建子线程并向其传递两个整型的参数,子线程找出这两个整数之间的所有素数,并输出。利用继承 Thread 类
时间: 2023-12-10 14:41:22 浏览: 99
如何使用Java编写多线程程序
5星 · 资源好评率100%
下面是一个简单的 Java 多线程程序,使用继承 Thread 类的方式实现:
```java
public class PrimeNumberThread extends Thread {
private int start;
private int end;
public PrimeNumberThread(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;
}
}
```
这个程序定义了一个 PrimeNumberThread 类,继承了 Thread 类,并实现了 run() 方法。在构造函数中,传入需要查找素数的区间起始值和结束值。在 run() 方法中,遍历这个区间,判断每个数是否是素数,如果是素数就输出。isPrime() 方法用来判断一个数是否是素数。
在主函数中,创建两个 PrimeNumberThread 实例,并启动它们的线程:
```java
public static void main(String[] args) {
int start = 1;
int end = 100;
PrimeNumberThread thread1 = new PrimeNumberThread(start, end/2);
PrimeNumberThread thread2 = new PrimeNumberThread(end/2+1, end);
thread1.start();
thread2.start();
}
```
这段代码创建了两个 PrimeNumberThread 实例,分别传入了区间起始值和结束值。然后调用 start() 方法启动这两个线程,线程会在后台运行并输出素数。注意,这里的区间划分是按照区间长度的一半来划分的,可以根据实际情况进行调整。
阅读全文