编写多线程程序在主线程main之外定义一个子线程用来计算某个整数区间内的所有素数。程序运行时主线程main创建子线程并向其传递两个整型的参数子线程计算这两个整数之间的所有素数并输出。请分别利用继承Thread类和实现Runnable接口这两种方式来实现多线程。所编写的程序分别命名为JavaExample15_1ajava和JavaExample15_1bjava。
JavaExample15_1a.java
public class JavaExample15_1a extends Thread {
private int startNum;
private int endNum;
public JavaExample15_1a(int startNum, int endNum) {
this.startNum = startNum;
this.endNum = endNum;
}
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;
}
@Override
public void run() {
System.out.println("Prime numbers between " + startNum + " and " + endNum + ":");
for (int i = startNum; i <= endNum; i++) {
if (isPrime(i)) {
System.out.print(i + " ");
}
}
}
public static void main(String[] args) {
int startNum = 1;
int endNum = 100;
JavaExample15_1a thread = new JavaExample15_1a(startNum, endNum);
thread.start();
}
}
JavaExample15_1b.java
public class JavaExample15_1b implements Runnable {
private int startNum;
private int endNum;
public JavaExample15_1b(int startNum, int endNum) {
this.startNum = startNum;
this.endNum = endNum;
}
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;
}
@Override
public void run() {
System.out.println("Prime numbers between " + startNum + " and " + endNum + ":");
for (int i = startNum; i <= endNum; i++) {
if (isPrime(i)) {
System.out.print(i + " ");
}
}
}
public static void main(String[] args) {
int startNum = 1;
int endNum = 100;
JavaExample15_1b example = new JavaExample15_1b(startNum, endNum);
Thread thread = new Thread(example);
thread.start();
}
}
``
原文地址: https://www.cveoy.top/t/topic/fbzs 著作权归作者所有。请勿转载和采集!