第一个类publicclassPrimeFinderimplementsRunnable{publiclongtarget;publiclongprime;publicbooleanfinished=false;privateThreadrunner;PrimeFinder(longinTarget){target=inTarge...
第一个类
public class PrimeFinder implements Runnable{
public long target;
public long prime;
public boolean finished = false;
private Thread runner;
PrimeFinder(long inTarget){
target = inTarget;
if(runner == null){
runner = new Thread(this);
runner.start();
}
}
@Override
public void run(){
long numPrimes = 0;
long candidate = 2;
while (numPrimes < target) {
if (isPrime(candidate)){
numPrimes++;
prime = candidate;
}
candidate++;
}
finished = true;
}
boolean isPrime(long checkNumber) {
double root = Math.sqrt(checkNumber);
for(int i = 2; i <= root; i++) {
if(checkNumber % i == 0)
return false;
}
return true;
}
}
第二个类,主类
public class PrimeThreads {
public static void main(String[] args){
PrimeThreads pt = new PrimeThreads(args);
}
public PrimeThreads(String[] args){
PrimeFinder[] finder = new PrimeFinder[args.length];
for(int i = 0; i < args.length; i++){
try{
long count = Long.parseLong(args[i]);
finder[i] = new PrimeFinder(count);
System.out.println("Looking for prime " + count);
}catch(NumberFormatException nfe){
System.out.println("Error: " + nfe.getMessage());
}
}
boolean complete = false;
while(!complete){
complete = true;
for(int j = 0; j < finder.length; j++){
if(finder[j] == null) continue;
if(!finder[j].finished){
complete = false;
}else{
displayResult(finder[j]);
finder[j] = null;
}
}
try{
Thread.sleep(1000);
}catch(InterruptedException ie){
// do nothing
}
}
}
private void displayResult(PrimeFinder finder){
System.out.println("Prime " + finder.target + " is " + finder.prime);
}
}
运行之后没输出如何结果
run:
成功构建 (总时间: 1 秒)
这是为什么??
展开