zoukankan      html  css  js  c++  java
  • 多线程和线程池

    有这样一个需求:你有一个list集合,需使用该list作为参数,调用另一个系统并返回结果后处理它(主要的目的是处理结果)
    解决方案:用线程池,不关闭线程池,将多个线程放入一个List集合中,使用invokeAll方法,相当于是将多个线程打包执行,统一返回,这样线程池可以一直不关闭,不用为了一个list开一个线程池,并且多个线程打包调用不会造成和其他用户的多线程冲突(究竟是你的线程还是我的线程):
    ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
    cachedThreadPool.invokeAll(List<new ExeRuleThread implement Callable<Objec>>);
    sample: https://blog.csdn.net/u014046563/article/details/89053115?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

    另一種解決思路:使用非返回結果的綫程,但傳入一個空的結果集合,在綫程中處理結果,例如:
    paramList//參數集合
    resultMap = new HashMap()//結果集合

    ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
    for (int i = 0; i < paramList.size(); i++) {
    inputParam = paramList.get(i);
    cachedThreadPool.execute(new ExeRuleThread(inputParam......,resultMap) implements Runnable);
    }
    cachedThreadPool.shutdown();

    try {
    cachedThreadPool.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
    } catch (InterruptedException e) {
    logger.error("cachedThreadPool time out");
    }

  • 相关阅读:
    SQL Server 配置管理器不见了
    SQL常用函数使用
    数据库优化
    关于百度地图js api的getCurrentPosition定位不准确的解决方法
    uni-app中使用外部字体
    不定高度,元素垂直居中
    css实现的鼠标悬浮提示
    导入
    下载
    百度地图在地图上标点显示数字
  • 原文地址:https://www.cnblogs.com/javac/p/6964966.html
Copyright © 2011-2022 走看看