package org.hwbot.bench;
import java.util.List;
import java.util.concurrent.Callable;
public class PrimeRunnable implements Callable<Void> {
private int from;
private List<Number> results; // shared but thread-safe
public PrimeRunnable(int from, List<Number> results) {
this.from = from;
this.results = results;
}
public void isPrime(int number) {
for (int i = 2; i < from; i++) {
if ((number % i) == 0) {
return;
}
}
// found prime, add to shared results
this.results.add(number);
}
public Void call() throws Exception {
try {
isPrime(from); // don't increment, just check one number
} catch (Throwable e) {
System.err.println("Failed to calc prime number!");
e.printStackTrace();
}
return null;
}
public List<Number> getResults() {
return results;
}
}