用java完成2.编写一个程序,用一个线程显示时间(系统毫秒数,每10ms显示一次),一个线程计算1000000中的最大质数,当质数计算完毕后,停止时间显示。
时间: 2023-11-27 22:53:08 浏览: 74
下面是使用Java编写的程序,其中包含一个线程用于显示时间(每10ms更新一次),另一个线程用于计算1000000以内的最大质数。当最大质数计算完毕后,程序将停止时间的显示。
```java
public class TimeAndPrimeNumber {
public static void main(String[] args) {
TimeThread timeThread = new TimeThread();
PrimeNumberThread primeNumberThread = new PrimeNumberThread();
timeThread.start();
primeNumberThread.start();
try {
primeNumberThread.join(); //等待质数计算线程结束
} catch (InterruptedException e) {
e.printStackTrace();
}
timeThread.stopTime(); //停止时间显示
}
}
class TimeThread extends Thread {
private boolean stop = false;
public void stopTime() {
stop = true;
}
@Override
public void run() {
while (!stop) {
System.out.println(System.currentTimeMillis());
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class PrimeNumberThread extends Thread {
@Override
public void run() {
int n = 1000000;
int maxPrimeNumber = 2;
for (int i = 2; i <= n; i++) {
if (isPrime(i)) {
maxPrimeNumber = i;
}
}
System.out.println("最大质数为:" + maxPrimeNumber);
}
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;
}
}
```
程序运行后,会同时开启时间显示线程和质数计算线程。时间显示线程每10ms更新一次时间,并输出到控制台。质数计算线程计算1000000以内的最大质数,并输出到控制台。当质数计算完毕后,程序将停止时间的显示。
阅读全文