Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package d1;
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
- import java.util.concurrent.TimeUnit;
- import java.util.concurrent.atomic.AtomicInteger;
- public class PrimeNumbersPoolProblem extends Thread {
- private int min;
- private int max;
- public static volatile AtomicInteger primeCount;
- public PrimeNumbersPoolProblem(int min, int max) {
- this.min = min;
- this.max = max;
- }
- @Override
- public void run() {
- for (int i = min; i < max; i++) {
- synchronized (primeCount) {
- if (isPrime(i)) {
- }
- }
- }
- }
- public synchronized boolean isPrime(int number) {
- for (int i = 2; i <= Math.sqrt(number); i++) {
- if (number % i == 0) {
- return false;
- }
- }
- primeCount.getAndIncrement();
- System.out.println(primeCount);
- return true;
- }
- public static void main(String[] args) throws InterruptedException {
- primeCount = new AtomicInteger(0);
- int threads = 12;
- int numbers = 1_000_000;
- ExecutorService executorService = Executors.newFixedThreadPool(threads);
- for (int i = 0; i < threads; i++) {
- Runnable worker = new PrimeNumbersPoolProblem(i * numbers / threads,
- numbers / threads + i * numbers / threads);
- executorService.execute(worker);
- }
- executorService.shutdown();
- Long startTime = System.currentTimeMillis();
- while (!executorService.isTerminated()) {
- }
- System.out.println("Execution time : " + (System.currentTimeMillis() - startTime) + " milliseconds");
- System.out.println("Final Prime Count is : " + primeCount);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement