Java线程池示例:并行计算200000以内的质数个数
生活随笔
收集整理的這篇文章主要介紹了
Java线程池示例:并行计算200000以内的质数个数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
static void countTime() throws Exception {long start = System.currentTimeMillis();List<Integer> list = getPrime(1, 200000);long end = System.currentTimeMillis();System.out.println("普通計算耗時:"+(end-start));System.out.println("=================================");final int cpuCoreNum = 4;ExecutorService service = Executors.newFixedThreadPool(cpuCoreNum);MyTask task1 = new MyTask(1, 80000);MyTask task2 = new MyTask(80001, 130000);MyTask task3 = new MyTask(130001, 170000);MyTask task4 = new MyTask(170001, 200000);Future<List<Integer>> f1 = service.submit(task1);Future<List<Integer>> f2 = service.submit(task2);Future<List<Integer>> f3 = service.submit(task3);Future<List<Integer>> f4 = service.submit(task4);long s = System.currentTimeMillis();List<Integer> list1 = f1.get();List<Integer> list2 = f2.get();List<Integer> list3 = f3.get();List<Integer> list4 = f4.get();long e = System.currentTimeMillis();System.out.println("并行計算耗時:"+(e-s));}static class MyTask implements Callable<List<Integer>>{int startPos,endPos;public MyTask(int startPos, int endPos) {this.startPos = startPos;this.endPos = endPos;}@Overridepublic List<Integer> call() throws Exception {List<Integer> list = getPrime(startPos, endPos);return list;}}//判斷一個數是不是質數static boolean isPrime(int num){for (int i = 2; i < num/2; i++) {if (num%i==0) return false;}return true;}static List<Integer> getPrime(int start,int end){List<Integer> results = new ArrayList<>();for (int i = start; i < end; i++) {if (isPrime(i)) results.add(i);}return results;}
總結
以上是生活随笔為你收集整理的Java线程池示例:并行计算200000以内的质数个数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java并发编程之CountDownLa
- 下一篇: Java获取当前运行的CPU是几核的