加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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);
        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读