for miaomiao
发布时间:2020-12-15 07:19:06 所属栏目:Java 来源:网络整理
导读:package com.mycloud.demo.thread; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurr
package com.mycloud.demo.thread; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; public abstract class MultiThreadService { public <T,R> List<T> process(List<R> resources,int threadNumber) { ExecutorService executorService = Executors.newFixedThreadPool(threadNumber); List<Future<T>> futures = new ArrayList<>(); for (R resource : resources) { SubTask<T,R> subTask = new SubTask<>(resource); futures.add(executorService.submit(subTask)); } List<T> resultList = new ArrayList<>(); try { for (Future<T> future : futures) { if (future.get() != null) { resultList.add(future.get()); } } } catch (InterruptedException | ExecutionException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { executorService.shutdown(); } return resultList; } protected abstract <T,R> T doSubTask(R resource); private class SubTask<T,R> implements Callable<T> { private R resource; public SubTask(R resource) { this.resource = resource; } @Override public T call() throws Exception { return doSubTask(resource); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 当许多精灵在屏幕上时,Java Swing游戏的性能很差
- 类型javax.servlet.ServletContext和javax.servlet.Servlet
- Java正则表达式验证工具类
- 1.3.4 并发工具类CountDownLatch/Semaphore/CyclicBarrier/
- Java数组常用排序算法实例小结
- java – RESTEasy和JAX-RS之间的区别
- Java Mail API setContent()不是作为HTML写在邮件正文中的
- java – 手动创建所有Document节点的NodeList
- Java:如何从InetAddress获取连接端口?
- java – Apache POI将一个系列名称添加到LineChart中