public List<Object> listWalletBalance() {
//拿到参数列表 List<String> coins = RedisUtil.listcoin();
//参数列表不能为空
if (coins == null && coins.size() <= 0) { return list; }
int taskSize = coins.size(); // 创建一个根据任务长度的线程池 ExecutorService pool = Executors.newFixedThreadPool(coins.size()); // 创建多个有返回值的任务 List<Future> flist = new ArrayList<Future>(); //创建一个存取执行任务线程的数组 Future[] futures = new Future[coins.size()];
try { //根据任务长度开启线程任务 for (int i = 0; i < coins.size(); i++) { //创建线程类 见下文 WalletInfo walletInfo = new WalletInfo(coins.get(i)); //将执行任务中的线程存入数组 futures[i]=pool.submit(walletInfo); } 遍历任务中的数组 for (Future f:futures) { list.add(f.get()); } // 关闭线程池 pool.shutdown(); // 获取所有并发任务的运行结果 } catch (Exception e) { e.printStackTrace(); } return list;
}
import static hry.utils.Constant.COINTYPE; import static hry.utils.Constant.WALLETINFO; import java.util.Date; import java.util.concurrent.Callable; import org.apache.commons.chain.Command; import org.apache.commons.chain.Context; import org.apache.commons.chain.impl.ContextBase; import hry.chain.getwalletinfo.CommandChainGetWalletInfo; import hry.dto.Wallet; import hry.utils.RSACodeUtil; public class WalletInfo implements Callable<Object> { private String Name; //构建方法 public WalletInfo(String Name) { this.coinName = Name; } @Override public Object call() throws Exception { Date dateTmp1 = new Date(); //任务代码存放位置 Date dateTmp2 = new Date(); long time = dateTmp2.getTime() - dateTmp1.getTime(); System.out.println("获取"+Name+"信息花费"+time+"毫秒"); //获取返回的对象 return object; } }