ExecutorService java多线程分割list运行

论坛 期权论坛 脚本     
匿名技术用户   2021-1-2 15:30   11   0

调用方法

           int threadNum = 7;
            while(true) {
                List<FaceAnalyseImage> list = faceAnalyseImageMapper.selectAllWaitDetectLimit2000();
                if(list == null || list.size() == 0) {
                    break;
                }
                if(list.size() <= threadNum) {
                    threadNum = list.size();
                }
                subList(list, threadNum);
            }

list按线程数量分割

StringBuffer ret = new StringBuffer();

        int size = list.size();
        ExecutorService executorService = Executors.newFixedThreadPool(nThreads);
        List<Future<String>> futures = new ArrayList<Future<String>>(nThreads);
        for (int i = 0; i < nThreads; i++) {
            final List<String> subList = list.subList(size / nThreads * i, size/ nThreads * (i + 1));
            Callable<String> task = new Callable<String>() {
                public String call() throws Exception {
                    getDataRunByDistinctTruckid(subList);
                    return "";
                }
            };
            futures.add(executorService.submit(task));
        }

        for (Future<String> future : futures) {
            ret.append(future.get());
        }
        executorService.shutdown();

        return ret.toString();

转载于:https://www.cnblogs.com/shihaiming/p/11411922.html

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP