Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.List;
- import java.util.concurrent.Callable;
- import java.util.concurrent.ExecutionException;
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
- import java.util.concurrent.Future;
- public class ParallelClass {
- public static class PrimeResult {
- private final long number;
- private final boolean isPrime;
- public PrimeResult (long number, boolean isPrime) {
- this.number = number;
- this.isPrime = isPrime;
- }
- }
- // Method used to check if a number is a prime number
- public static PrimeResult CheckIfPrime(long n) throws InterruptedException
- {
- long i;
- for (i = 2; i <= n - 1; i++)
- {
- if (n % i == 0)
- {
- return new PrimeResult(n, false);
- }
- }
- return new PrimeResult(n, true);
- }
- public static void main(String[] args) {
- long first = 0;
- long last = 1_000_000;
- int availableProcessors = Runtime.getRuntime().availableProcessors();
- System.out.println("Available processors: " + availableProcessors);
- System.out.println("Starting check from " + first + " to " + last + "...");
- // Create a list of tasks to execute
- List<Callable<PrimeResult>> tasks = new ArrayList<Callable<PrimeResult>>();
- for (long i = first; i < last; i++) {
- final long iter = i;
- Callable<PrimeResult> c = new Callable<PrimeResult>() {
- @Override
- public PrimeResult call() throws Exception {
- return CheckIfPrime(iter);
- }
- };
- tasks.add(c);
- }
- // Create the Executor Service
- ExecutorService exec = Executors.newFixedThreadPool(availableProcessors);
- //ExecutorService exec = Executors.newSingleThreadExecutor();
- try {
- long start = System.currentTimeMillis();
- List<Future<PrimeResult>> results = exec.invokeAll(tasks);
- for (Future<PrimeResult> fpr : results) {
- System.out.println("Number " + fpr.get().number + " is prime? " + fpr.get().isPrime);
- }
- long elapsed = System.currentTimeMillis() - start;
- System.out.println(String.format("Elapsed time: %d ms", elapsed));
- } catch (Exception ex) {
- System.out.println("An exception occurred! Exception message:");
- System.out.println(ex.getMessage());
- }
- finally {
- exec.shutdown();
- }
- System.out.println("Finished!");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement