Java使用线程池和多线程实现并行计算(案例一)
发布日期:2022-05-29 19:00:13 浏览次数:4 分类:技术文章

本文共 1948 字,大约阅读时间需要 6 分钟。

主要实现:

  • 任务分割分步骤计算执行
  • 执行结果有序的聚合在一起
package thread;import java.util.ArrayList;import java.util.List;import java.util.concurrent.Callable;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;public class ParallelComputeDemo {
public static void main(String[] args) {
long startTime = System.currentTimeMillis(); List
results = getMultiple(1, 200); long endTime = System.currentTimeMillis(); System.out.println("耗时1:" + (endTime -startTime)); ExecutorService service = Executors.newFixedThreadPool(4); MyCallable t1 = new MyCallable(1, 30); MyCallable t2 = new MyCallable(31, 70); MyCallable t3 = new MyCallable(71, 140); MyCallable t4 = new MyCallable(141, 200); Future
> s1 = service.submit(t1); Future
> s2 = service.submit(t2); Future
> s3 = service.submit(t3); Future
> s4 = service.submit(t4); startTime = System.currentTimeMillis(); try { System.out.println(s1.get()); System.out.println(s2.get()); System.out.println(s3.get()); System.out.println(s4.get()); }catch (Exception e){ e.printStackTrace(); } endTime = System.currentTimeMillis(); System.out.println("耗时2:" + (endTime - startTime)); service.shutdown();} static class MyCallable implements Callable
>{ private int start; private int end; public int getStart() { return start; } public void setStart(int start) { this.start = start; } public int getEnd() { return end; } public void setEnd(int end) { this.end = end; } public MyCallable(int start, int end) { this.start = start; this.end = end; } @Override public List
call() throws Exception { List
result = getMultiple(start, end); return result; } } public static List
getMultiple(int start, int end) { List
results = new ArrayList<>(); for (int i = start; i <= end; i++){ if(i % 6 == 0 && i != 0){ results.add(i); } } return results; }}

转载地址:https://blog.csdn.net/xiaowanzi_zj/article/details/123415201 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:java例题
下一篇:java使用的sqlite下载地址

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月05日 07时36分12秒