Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1. package d1;
  2.  
  3. import java.util.concurrent.ExecutorService;
  4. import java.util.concurrent.Executors;
  5. import java.util.concurrent.TimeUnit;
  6. import java.util.concurrent.atomic.AtomicInteger;
  7.  
  8. public class PrimeNumbersPoolProblem extends Thread {
  9. private int min;
  10. private int max;
  11. public static volatile AtomicInteger primeCount;
  12.  
  13. public PrimeNumbersPoolProblem(int min, int max) {
  14.  
  15. this.min = min;
  16. this.max = max;
  17. }
  18.  
  19. @Override
  20. public void run() {
  21. for (int i = min; i < max; i++) {
  22. synchronized (primeCount) {
  23. if (isPrime(i)) {
  24. }
  25. }
  26.  
  27. }
  28.  
  29. }
  30.  
  31. public synchronized boolean isPrime(int number) {
  32. for (int i = 2; i <= Math.sqrt(number); i++) {
  33. if (number % i == 0) {
  34. return false;
  35. }
  36. }
  37. primeCount.getAndIncrement();
  38. System.out.println(primeCount);
  39. return true;
  40. }
  41.  
  42. public static void main(String[] args) throws InterruptedException {
  43. primeCount = new AtomicInteger(0);
  44. int threads = 12;
  45. int numbers = 1_000_000;
  46. ExecutorService executorService = Executors.newFixedThreadPool(threads);
  47. for (int i = 0; i < threads; i++) {
  48. Runnable worker = new PrimeNumbersPoolProblem(i * numbers / threads,
  49. numbers / threads + i * numbers / threads);
  50. executorService.execute(worker);
  51. }
  52. executorService.shutdown();
  53. Long startTime = System.currentTimeMillis();
  54. while (!executorService.isTerminated()) {
  55. }
  56. System.out.println("Execution time : " + (System.currentTimeMillis() - startTime) + " milliseconds");
  57. System.out.println("Final Prime Count is : " + primeCount);
  58.  
  59. }
  60.  
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement