Callable 多线程

梦里梦外; 2022-03-27 01:44 362阅读 0赞
  1. public List<Object> listWalletBalance() {
  2. //拿到参数列表
  3. List<String> coins = RedisUtil.listcoin();

//参数列表不能为空

  1. if (coins == null && coins.size() <= 0) {
  2. return list;
  3. }
  4. int taskSize = coins.size();
  5. // 创建一个根据任务长度的线程池
  6. ExecutorService pool = Executors.newFixedThreadPool(coins.size());
  7. // 创建多个有返回值的任务
  8. List<Future> flist = new ArrayList<Future>();
  9. //创建一个存取执行任务线程的数组
  10. Future[] futures = new Future[coins.size()];
  11. try {
  12. //根据任务长度开启线程任务
  13. for (int i = 0; i < coins.size(); i++) {
  14. //创建线程类 见下文
  15. WalletInfo walletInfo = new WalletInfo(coins.get(i));
  16. //将执行任务中的线程存入数组
  17. futures[i]=pool.submit(walletInfo);
  18. }
  19. 遍历任务中的数组
  20. for (Future f:futures) {
  21. list.add(f.get());
  22. }
  23. // 关闭线程池
  24. pool.shutdown();
  25. // 获取所有并发任务的运行结果
  26. } catch (Exception e) {
  27. e.printStackTrace();
  28. }
  29. return list;
  30. }
  31. import static hry.utils.Constant.COINTYPE;
  32. import static hry.utils.Constant.WALLETINFO;
  33. import java.util.Date;
  34. import java.util.concurrent.Callable;
  35. import org.apache.commons.chain.Command;
  36. import org.apache.commons.chain.Context;
  37. import org.apache.commons.chain.impl.ContextBase;
  38. import hry.chain.getwalletinfo.CommandChainGetWalletInfo;
  39. import hry.dto.Wallet;
  40. import hry.utils.RSACodeUtil;
  41. public class WalletInfo implements Callable<Object> {
  42. private String Name;
  43. //构建方法
  44. public WalletInfo(String Name) {
  45. this.coinName = Name;
  46. }
  47. @Override
  48. public Object call() throws Exception {
  49. Date dateTmp1 = new Date();
  50. //任务代码存放位置
  51. Date dateTmp2 = new Date();
  52. long time = dateTmp2.getTime() - dateTmp1.getTime();
  53. System.out.println("获取"+Name+"信息花费"+time+"毫秒");
  54. //获取返回的对象
  55. return object;
  56. }
  57. }

发表评论

表情:
评论列表 (有 0 条评论,362人围观)

还没有评论,来说两句吧...

相关阅读

    相关 线】——Callable创建线

        之前小编的博客简单介绍了两种创建线程的方式,随着小编工作过程对这一部分的深入,对这一部分有更深入的理解,也知道其他创建多线程方式,在原来的基础在深入一下! 回顾

    相关 线实现之Callable

    创建线程的两种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。这两种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。如果需要获取执行结果,就必须

    相关 线callable

    传统的thread里面,在执行完任务之后无法获取执行结果。通过共享变量或者使用线程通信获取结果,比较麻烦。 就是Runnable接口,线程的真正业务在run里面。 jd