1 package ch.hslu.exercises.sw08.ex1; 2 3 import java.math.BigInteger; 4 import java.util.Random; 5 import java.util.concurrent.ExecutorService; 6 import java.util.concurrent.Executors; 7 8 public final class PrimeCalculator { 9 10 11 private final int threads; 12 13 public PrimeCalculator(final int threads) { 14 this.threads = threads; 15 } 16 17 public void calculatePrimesConcurrent() { 18 try (ExecutorService executor = Executors.newFixedThreadPool(threads)) { 19 for (int i = 0; i < 100; i++) { 20 executor.execute(new PrimeSearcher()); 21 } 22 } 23 } 24 25 public void calculatePrimesSingleThreaded() { 26 int n = 1; 27 while (n <= 100) { 28 BigInteger bi = new BigInteger(1024, new Random()); 29 if (bi.isProbablePrime(Integer.MAX_VALUE)) { 30 n++; 31 } 32 } 33 } 34 35 36 private static final class PrimeSearcher implements Runnable { 37 @Override 38 public void run() { 39 while (true) { 40 BigInteger bi = new BigInteger(1024, new Random()); 41 if (bi.isProbablePrime(Integer.MAX_VALUE)) { 42 return; 43 } 44 } 45 } 46 } 47 }